Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从android中的电池管理器类获取电池温度?_Java_Android - Fatal编程技术网

Java 如何从android中的电池管理器类获取电池温度?

Java 如何从android中的电池管理器类获取电池温度?,java,android,Java,Android,这是我的BattreyInfo.java文件。我正试图提取电池温度并将其显示在屏幕上。Eclipse表示,broadcastReceiver无法解析为类型。我不明白。我已经正确地导入了这个包。它也无法识别接收时的onreceive功能。我是否必须为广播接收器制作另一个类或其他内容 package com.example.batterywidget; import android.app.Activity; import android.content.Intent; import androi

这是我的BattreyInfo.java文件。我正试图提取电池温度并将其显示在屏幕上。Eclipse表示,
broadcastReceiver
无法解析为类型。我不明白。我已经正确地导入了这个包。它也无法识别接收时的
onreceive
功能。我是否必须为
广播接收器
制作另一个类或其他内容

package com.example.batterywidget;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.BatteryManager;
import android.widget.TextView;
import android.content.BroadcastReceiver;
import android.content.Context; 
import android.content.IntentFilter;
import android.graphics.Color; 
import android.view.View;


public class BatteryInfo extends Activity {

private TextView BatTemp;
BroadcastReceiver mBatInfoReciever = new BroadcastReceiver(){

    @Override
    public void onRecieve(Context arg0, Intent intent){
        int temp = intent.getIntExtra(BatteryManager.EXTRA_TEMPERATURE, 0);
        BatTemp.setText(String.valueOf(temp) + "%");

    }
};

    //called when the activity is first created
    @Override
     public void onCreate(Bundle binfo){
     super.onCreate(binfo);
     setContentView(R.layout.batteryinfo);
     BatTemp = (TextView) this.findViewById(R.id.battery_temp);


    }
    @Override
    protected void onResume() {
            super.onResume();
            IntentFilter filter = new IntentFilter();

            filter.addAction(Intent.ACTION_BATTERY_CHANGED);
            registerReceiver(mBatInfoReceiver, filter);
    }
    @Override
    protected void onPause() {
            super.onPause();
            unregisterReceiver(mBatInfoReceiver);
    }

}

这是我用来获取温度的代码

batteryReceiver = new BroadcastReceiver() {
            int level = -1;
            int scale = -1;
            int temperature = -1;
            @Override
            public void onReceive(Context context, Intent intent) {
                level = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);
                scale = intent.getIntExtra(BatteryManager.EXTRA_SCALE, -1);
                temperature = intent.getIntExtra(BatteryManager.EXTRA_TEMPERATURE, -1);

                int health = intent.getIntExtra("health",BatteryManager.BATTERY_HEALTH_UNKNOWN);
                String strHealth;
                if (health == BatteryManager.BATTERY_HEALTH_GOOD){
                    strHealth = "Good";
                } else if (health == BatteryManager.BATTERY_HEALTH_OVERHEAT){
                    strHealth = "Over Heat";
                } else if (health == BatteryManager.BATTERY_HEALTH_DEAD){
                    strHealth = "Dead";
                } else if (health == BatteryManager.BATTERY_HEALTH_OVER_VOLTAGE){
                    strHealth = "Over Voltage";
                } else if (health == BatteryManager.BATTERY_HEALTH_UNSPECIFIED_FAILURE){
                    strHealth = "Unspecified Failure";
                } else{
                    strHealth = "Unknown";
                }


                batteryStatusTextView.setText(" Temperature: "+temperature/10+"C" + " " + strHealth);

            }
        };
        IntentFilter filter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
        registerReceiver(batteryReceiver, filter);

BroadcastReceiver是一个抽象类。这意味着您无法创建它的实例。您必须创建自己的类并扩展BroadcastReceiver

我认为您可以将所有现有代码复制到新类中

你好像有3个广播员。 第一个应该是这样的:

public class BatInfoReceiver extends BroadcastReceiver{
 @Override
    public void onRecieve(Context arg0, Intent intent){
        int temp = intent.getIntExtra(BatteryManager.EXTRA_TEMPERATURE, 0);
        BatTemp.setText(String.valueOf(temp) + "%");

    }
}
现在可以创建此类的实例:

BatInforeceiver mBatInfoReceiver = new BatInfoReceiver();

然后对其他两个广播接收机也执行相同的操作。

是。但是你是怎么写BroadCatReceiver的。我的eclipse说它不能解析为类型。我知道这是一个抽象类,但我应该如何更正它。我是否应该使用BroadcastReceiver而不是Activity扩展BatteryInfo?batteryReceiver的声明如下:public BroadcastReceiver batteryReceiver;就这样。我的类只是一个activity,它没有实现任何与BroadcastReceiver相关的东西。我只导入了import android.content.BroadcastReceiver;上面的代码是在onCreate中实现的。就这些。我应该用广播接收器而不是活动来扩展BatteryInfo吗?非常感谢您的帮助。我希望我有足够的声誉来投票支持这个!上帝保佑你的项目:)问题是我的eclipse说BroadcastReceiver不能解析为一个类型?怎么样?我已经正确地导入了这个包。我是否需要在单独的java文件中创建BroadcastReceiver类?
public class BatInfoReceiver extends BroadcastReceiver{
 @Override
    public void onRecieve(Context arg0, Intent intent){
        int temp = intent.getIntExtra(BatteryManager.EXTRA_TEMPERATURE, 0);
        BatTemp.setText(String.valueOf(temp) + "%");

    }
}
BatInforeceiver mBatInfoReceiver = new BatInfoReceiver();