Reputation: 673
This is my BattreyInfo.java file. I am trying to extract the battery temperature and display it on my screen. The Eclipse says the BroadcastReciever
cannot be resolved to a type. I dont understand. I have properly imported the package. It also does not recognize the onRecieve
function. Do I have to make another class or something for 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);
}
}
Upvotes: 2
Views: 3693
Reputation: 540
BroadcastReceiver is an abstract class. This means that you cannot make an instance of it. You have to create your own class and extend BroadcastReceiver.
I think you can copy all of your existing code into your new class.
You seem to have 3 Broadcasters. The first one shoudl look like this:
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) + "%");
}
}
Now its possible to make an instance of this class:
BatInforeceiver mBatInfoReceiver = new BatInfoReceiver();
And then you do the same with your other two BroadcastReceivers.
Upvotes: 2
Reputation: 127
BroadcastReceiver batteryReceiver = new BroadcastReceiver() {
int scale = -1;
int level = -1;
int voltage = -1;
int temp = -1;
@Override
public void onReceive(Context context, Intent intent) {
level = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);
scale = intent.getIntExtra(BatteryManager.EXTRA_SCALE, -1);
temp = intent.getIntExtra(BatteryManager.EXTRA_TEMPERATURE, -1);
voltage = intent.getIntExtra(BatteryManager.EXTRA_VOLTAGE, -1);
Log.e("BatteryManager", "level is "+level+"/"+scale+", temp is "+temp+", voltage is "+voltage);
}
};
Upvotes: 0
Reputation: 1610
private void batteryLevel() {
BroadcastReceiver batteryLevelReceiver = new BroadcastReceiver() {
public void onReceive(Context context, Intent intent) {
context.unregisterReceiver(this);
int rawlevel = intent.getIntExtra(BatteryManager.EXTRA_LEVEL,
-1);
int scale = intent.getIntExtra(BatteryManager.EXTRA_SCALE, -1);
int level = -1;
if (rawlevel >= 0 && scale > 0) {
level = (rawlevel * 100) / scale;
}
batteryLevel.setText("Battery Level Remaining: " + level + "%");
}
};
IntentFilter batteryLevelFilter = new IntentFilter(
Intent.ACTION_BATTERY_CHANGED);
registerReceiver(batteryLevelReceiver, batteryLevelFilter);
}
Upvotes: 1
Reputation: 598
This is the code that I used to get the temperature
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);
Upvotes: 0