Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem Android studio teplotní čidlo

Zdravím
Nemám co dělat a proto se hraji :-) na youtube jsem si našel https://www.youtube.com/watch?v=JKuTnuUsKOI&ab_channel=SarthiTechnology kde to čte teplotu bohužel jen na emulátoru ale na fyzickém telefonu to ukáže Temperature Sensor is not Avaliable jak to nastavit aby to nějaký ten vnitrní teplotní senzor aby nějakou teplotu přečetlo? díky

Jsou zobrazeny jen nové odpovědi. Zobrazit všechny
Předmět Autor Datum
No a má tvůj telefon příslušný senzor?
Wikan 28.07.2023 14:17
Wikan
Každý telefon musí mít nějaké teplotní čidlo .
Víťa 28.07.2023 14:20
Víťa
Nějaké ano, ale to ještě neznamená, že se z něj dá programově zjistit teplota.
Wikan 28.07.2023 14:22
Wikan
Třeba tady [97396-screenshot-2023-07-29-09-03-29-4-jpg] přečíst tuto teplotu sensoru
Víťa 29.07.2023 09:12
Víťa
To je ale teplota baterky a ne okolí. IntentFilter ifilter = new IntentFilter(Intent.ACTION_BATTERY…
Wikan 29.07.2023 11:06
Wikan
Já vím že to teplota baterky i to čidlo bych si mohl vyčíst například ve své apce díky
Víťa 29.07.2023 11:17
Víťa
Kód jsem tam přidal.
Wikan 29.07.2023 11:18
Wikan
Otázka je kde ho umístit ten tvůj kód ? [97398-teplotabaterie-jpg] tady to nefunguje aplikace se zhr…
Víťa 31.07.2023 13:13
Víťa
No kdybys radši napsal, s jakou chybou se to zhroutilo.
Wikan 31.07.2023 13:14
Wikan
Chyba 2023-07-31 13:18:16.971 3977-3995/? E/FA: Discarding data. Failed to send app launch 2023-07-3…
Víťa 31.07.2023 13:20
Víťa
Proč jsi tam dal ten řádek: Context context = null; ?
Wikan 31.07.2023 13:36
Wikan
když to zakomentuji tak je tam chyba :-/ [97399-context-jpg]
Víťa 31.07.2023 13:41
Víťa
Tak jsi měl řešit tu chybu. Uprav ten řádek na: Intent batteryStatus = this.registerReceiver(null,…
Wikan 31.07.2023 13:50
Wikan
A jak výsledek vypsat float celsiusTemperature = (float) (tem / 10.0); do textView.setText() ? díky
Víťa 31.07.2023 14:11
Víťa
textView.setText(celsiusTemperature + " °C");
Wikan 31.07.2023 14:16
Wikan
package cz.vs.teplota; //https://www.youtube.com/watch?v=JKuTnuUsKOI&ab_channel=SarthiTechnology imp…
Víťa 31.07.2023 14:39
Víťa
Protože to pleteš dohromady s původním kódem, který ve tvém případě vůbec nedává smysl. Smaž všechny…
Wikan 31.07.2023 14:50
Wikan
Trochu se mě to rozchází podle [97396-screenshot-2023-07-29-09-03-29-4-jpg] díky
Víťa 31.07.2023 21:15
Víťa
Ale co to konkrétně znamená, to už nenapíšeš, co?
Wikan 31.07.2023 21:49
Wikan
Lítá mi to o 1 stupeň nahoru a dolů než v té výše uvedené aplikaci díky nový
Víťa 01.08.2023 09:28
Víťa
To bude nejspíš zaokrouhlováním. nový
Wikan 01.08.2023 10:00
Wikan
To by nebyl Víťa, aby neřešil takovou odchylku :-) poslední
Lukas1982 01.08.2023 10:09
Lukas1982

To je ale teplota baterky a ne okolí.

IntentFilter ifilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
Intent batteryStatus = context.registerReceiver(null, ifilter);

int temperature = batteryStatus.getIntExtra(BatteryManager.EXTRA_TEMPERATURE, -1);
if (temperature != -1) {
    float celsiusTemperature = temperature / 10.0;
}
package cz.vs.teplota;
//https://www.youtube.com/watch?v=JKuTnuUsKOI&ab_channel=SarthiTechnology
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.BatteryManager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity implements SensorEventListener {
    private TextView textView;
    private SensorManager sensorManager;
    private Sensor tepmSensor;
    private boolean tenperature;
    private float tem,celsiusTemperature;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        textView = findViewById(R.id.textViwer);
        IntentFilter ifilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
        //Context context = null;
        Intent batteryStatus = this.registerReceiver(null, ifilter);

        int tem = batteryStatus.getIntExtra(BatteryManager.EXTRA_TEMPERATURE, -1);
        if (tem != -1) {
           float celsiusTemperature = (float) (tem / 10.0);
        }
        sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
        if (sensorManager.getDefaultSensor(Sensor.TYPE_AMBIENT_TEMPERATURE) != null) {
            tepmSensor = sensorManager.getDefaultSensor(Sensor.TYPE_AMBIENT_TEMPERATURE);
            tenperature = true;
        } else {
            textView.setText("Temperature Sensor is not Avaliable");
            tenperature = false;
        }
    }

    @Override
    public void onSensorChanged(SensorEvent sensorEvent) {
        //textView.setText(sensorEvent.values[0]+" °C");
         textView.setText(celsiusTemperature + "C");
    }

    @Override
    protected void onPostResume() {
        super.onPostResume();
        if (tenperature){
            sensorManager.registerListener(this,tepmSensor,SensorManager.SENSOR_DELAY_NORMAL);
        }
    }

    @Override
    protected void onPause() {
        super.onPause();
        if (tenperature){
            sensorManager.unregisterListener(this);
        }
    }

    @Override
    public void onAccuracyChanged(Sensor sensor, int i) {

    }
}

ještě je tam někde chyba pořád to ukazuje Temperature Sensor is not Avaliable" na fyzickém mobilu :-( díky

Protože to pleteš dohromady s původním kódem, který ve tvém případě vůbec nedává smysl.
Smaž všechny metody kromě onCreate a tu uprav následovně:


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    textView = findViewById(R.id.textViwer);

    IntentFilter ifilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
    Intent batteryStatus = this.registerReceiver(null, ifilter);

    int tem = batteryStatus.getIntExtra(BatteryManager.EXTRA_TEMPERATURE, -1);
    if (tem != -1) {
       float celsiusTemperature = tem / 10.0f;
       textView.setText(celsiusTemperature + " °C");
    }
}

Zpět do poradny Odpovědět na původní otázku Nahoru