这是我的battreyinfo.java文件。我试图提取电池温度并显示在我的屏幕上。eclipse说BroadcastReciever不能解析为类型。我不明白。我已经把包裹正确地进口了。它也不能识别onRecieve功能。我需要为BroadcastReciever再上一堂课吗?

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);
    }

}

最佳答案

BroadcastReceiver是一个抽象类。这意味着你不能做一个实例。您必须创建自己的类并扩展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();

然后你对另外两个广播接收器也这样做。

09-26 01:09