以编程方式获得Android中的电池电压

时间:2020-02-23 14:29:27  来源:igfitidea点击:

有时当我们正在开发Android应用程序时,我们可能想要获得当前的电池

在本教程中,我们将看到如何在Android中获取电池电压。
我们可以使用Intent.getIntextra(BatteryManager.extra_voltage,0)获取有关电流电池电压的信息。

步骤1 :

创建一个Android应用程序ProjectNamed"getBatteryVoltageApp"。

第2步 :

更改RES - >布局 - > Activity_main.xml如下所示:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:tools="http://schemas.android.com/tools"
 android:id="@+id/activity_main"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:paddingBottom="@dimen/activity_vertical_margin"
 android:paddingLeft="@dimen/activity_horizontal_margin"
 android:paddingRight="@dimen/activity_horizontal_margin"
 android:paddingTop="@dimen/activity_vertical_margin"
 tools:context="com.theitroad.getbatteryvoltageapp.MainActivity">
 
 <TextView
 android:id="@+id/textViewBatteryVol"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:layout_centerHorizontal="true"
 android:layout_centerVertical="true"
 android:textAppearance="?android:attr/textAppearanceLarge" 
 
 <Button
 android:id="@+id/buttonBatteryVol"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:layout_below="@+id/textViewBatteryVol"
 android:layout_centerHorizontal="true"
 android:layout_marginTop="16dp"
 android:text="Click here to Get battery voltage" 
</RelativeLayout>

第3步:

更改src/main/packageName/mainActivity.java如下:

package com.theitroad.getbatteryvoltageapp;
import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.BatteryManager;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
 
import com.theitroad.getbatteryvoltageapp.R;
 
public class MainActivity extends Activity {
 
    TextView volTextView;
    Button button;
    IntentFilter intentfilter;
    int batteryVol;
    float fullVoltage;
    String currentBatteryVol="Current Battery Voltage :";
    int batteryLevel;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        button = (Button)findViewById(R.id.buttonBatteryVol);
        volTextView = (TextView)findViewById(R.id.textViewBatteryVol);
 
        intentfilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
 
        button.setOnClickListener(new View.OnClickListener() {
 
            @Override
            public void onClick(View v) {
                MainActivity.this.registerReceiver(broadcastreceiver,intentfilter);
 
            }
        });
    }
 
    private BroadcastReceiver broadcastreceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            
            batteryVol = (int)(intent.getIntExtra(BatteryManager.EXTRA_VOLTAGE,0));
            fullVoltage = (float) (batteryVol * 0.001);
            volTextView.setText(currentBatteryVol +" "+fullVoltage+" volt");
 
        }
    };
}

正如我们想要获得电池级别的信息,我们需要注册广播接收机和意图过滤器。
意图过滤器用于告诉本机电池应用程序,该应用程序正在侦听本机电池应用程序的更改。
让我们了解上面的代码:

Intent.Action_Battery_Changed:

如果我们看到了我们使用的代码.Action_battery_changeed以获取当前电池信息。
它是粘性广播,包含电池充电状态,级别和其他信息。
BatteryManager类包含所有常量字符串。
广播粘性广播一旦注册,将保持活跃。

MainActivity.this.registerReceiver(broadcastreceiver,intentfilter);

其中我们正在注册创建的Broadcastreceiver,主动筛选和意向滤波器正在侦听电池更改事件。