Android监听USB连接/断开,充电/未充电

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent">
        <TextView
            android:id="@+id/text"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />

    </ScrollView>
</LinearLayout>
package zhangphil.adb;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.BatteryManager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;

import java.text.SimpleDateFormat;
import java.util.Date;


public class MainActivity extends AppCompatActivity {
    private String TAG = "USB连接状态";
    private final static String USB_ACTION = "android.hardware.usb.action.USB_STATE";

    private TextView text;
    private String string = "";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        text = findViewById(R.id.text);

        IntentFilter filter = new IntentFilter();
        filter.addAction(Intent.ACTION_BATTERY_CHANGED);
        filter.addAction(Intent.ACTION_BATTERY_LOW);
        filter.addAction(Intent.ACTION_BATTERY_OKAY);
        filter.addAction(Intent.ACTION_POWER_CONNECTED);
        filter.addAction(Intent.ACTION_POWER_DISCONNECTED);
        filter.addAction(USB_ACTION);
        registerReceiver(mBroadcastReceiver, filter);

        registerReceiver(mBroadcastReceiver, new IntentFilter(USB_ACTION));
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        unregisterReceiver(mBroadcastReceiver);
    }

    private void displayMsg(String s) {
        SimpleDateFormat sdf = new SimpleDateFormat("MM-dd HH:mm:ss:SSS");
        string = string + sdf.format(new Date()) + "\t\t" + s + "\n";
        text.setText(string);
    }

    private BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            String action = intent.getAction();
            switch (action) {
                case USB_ACTION:
                    boolean connected = intent.getExtras().getBoolean("connected");
                    if (connected) {
                        displayMsg("USB已连接");
                    } else {
                        displayMsg("USB未连接");
                    }
                    break;

                case Intent.ACTION_BATTERY_CHANGED:
                    //电量发生改变。
                    displayMsg("电量发生改变");

                    boolean isCharging = intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1) != 0;
                    if (isCharging) {
                        //剩余电量。
                        int level = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);

                        //电量最大值。
                        int scale = intent.getIntExtra(BatteryManager.EXTRA_SCALE, -1);

                        //电量百分比。
                        float batteryPct = level / (float) scale;
                        displayMsg("充电," + level + "-" + batteryPct + "-" + scale);
                    }
                    break;

                case Intent.ACTION_BATTERY_LOW:
                    displayMsg("电量过低");
                    break;

                case Intent.ACTION_BATTERY_OKAY:
                    displayMsg("电量满");
                    break;

                case Intent.ACTION_POWER_CONNECTED:
                    displayMsg("电源接通");
                    break;

                case Intent.ACTION_POWER_DISCONNECTED:
                    displayMsg("电源断开");
                    break;
            }
        }
    };
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zhangphil

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值