1

私は問題があります。:) それは小さなものですが、誰かが助けてくれれば感謝します!

Androidデバイスのバッテリー情報を取得したいのですが、nullが返されます。私はすべて正しいことをしましたが、エラーを理解することはできません。:(

protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.resources_battery);

    BroadcastReceiver batteryData = new BroadcastReceiver() {
        String tech,temp;
        int level;
        @Override
        public void onReceive(Context context, Intent intent) {
            // TODO Auto-generated method stub
            tech = intent.getStringExtra(BatteryManager.EXTRA_TECHNOLOGY);
            level = intent.getIntExtra(BatteryManager.EXTRA_LEVEL,-1);
            temp = intent.getStringExtra(BatteryManager.EXTRA_TEMPERATURE);

            TextView technology = (TextView) findViewById(R.id.Appres_BatType);
            technology.setText("Current Technology : " + tech);
            TextView Tempreture = (TextView) findViewById(R.id.Appres_Battemp);
            Tempreture.setText("Current Battery Tempreature : " +temp);
        }
    };

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

上記は一時を取得するために書いたコードですが、null を返します! 助けてください!

コードをこのbtに変更しても、ゼロが返されます!

temp = intent.getIntExtra(BatteryManager.EXTRA_TEMPERATURE, -1);
4

2 に答える 2

6

temp = intent.getIntExtra(BatteryManager.EXTRA_TEMPERATURE, -1);

温度を取得する正しい方法です。

これは私のために働く:

protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.resources_battery);

BroadcastReceiver batteryData = new BroadcastReceiver() {
    String tech;
    int level,temp;
    @Override
    public void onReceive(Context context, Intent intent) {
        // TODO Auto-generated method stub
        tech = intent.getStringExtra(BatteryManager.EXTRA_TECHNOLOGY);
        level = intent.getIntExtra(BatteryManager.EXTRA_LEVEL,-1);
        temp = intent.getIntExtra(BatteryManager.EXTRA_TEMPERATURE, -1);

        TextView technology = (TextView) findViewById(R.id.Appres_BatType);
        technology.setText("Current Technology : " + tech);
        TextView Tempreture = (TextView) findViewById(R.id.Appres_Battemp);
        Tempreture.setText("Current Battery Tempreature : " +temp);
    }
};

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

もしかしたら、バッテリーの温度を正しく報告しないデバイスをお持ちではないでしょうか? 私のデバイス (Galaxy Nexus) レポート: 330 (摂氏の 1/10 で、この質問を参照)。

于 2012-07-09T18:11:52.930 に答える
2

temp を int に変更し、最後に書いた行を使用するだけです

protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.resources_battery);

    BroadcastReceiver batteryData = new BroadcastReceiver() {
    String tech;
    int level,temp;
        @Override
        public void onReceive(Context context, Intent intent) {
            // TODO Auto-generated method stub
            tech = intent.getStringExtra(BatteryManager.EXTRA_TECHNOLOGY);
            level = intent.getIntExtra(BatteryManager.EXTRA_LEVEL,-1);
            temp = intent.getIntExtra(BatteryManager.EXTRA_TEMPERATURE,-1);

            TextView technology = (TextView) findViewById(R.id.Appres_BatType);
            technology.setText("Current Technology : " + tech);
            TextView Tempreture = (TextView) findViewById(R.id.Appres_Battemp);
            Tempreture.setText("Current Battery Tempreature : " +temp);
        }
    };

    IntentFilter filter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
    registerReceiver(batteryData, filter);
}
于 2012-07-09T18:10:43.693 に答える