Android P在状态栏加入USB图标并根据插入/拔出状态显示/隐藏USB图标

本文详细介绍如何在Android系统状态栏中集成USB图标,包括修改system_icons.xml文件以添加USB图标资源,以及在CollapsedStatusBarFragment.java中实现USB设备连接与断开的逻辑响应。

代码路径:
frameworks\base\packages\SystemUI\res\layout\system_icons.xml
frameworks\base\packages\SystemUI\src\com\android\systemui\statusbar\phone\CollapsedStatusBarFragment.java

在system_icons.xml中加入USB图标的UI:

<ImageView
  	android:id="@+id/icon_usb"
  	android:paddingStart="@dimen/status_bar_padding_start"
android:layout_width="@dimen/status_bar_icon_size"
	android:layout_height="@dimen/status_bar_icon_size"
	android:src="@drawable/ic_usb_white_24dp"
	android:scaleType="center"
	android:visibility="gone"
	android:paddingEnd="@dimen/signal_cluster_battery_padding"/>

在CollapsedStatusBarFragment.java中加入USB图标的逻辑:

import android.hardware.usb.UsbManager;

private ImageView mIconUsb;
mIconUsb = mStatusBar.findViewById(R.id.icon_usb);

IntentFilter filter = new IntentFilter();
filter.addAction(MUSIC_STATUSBAR);
filter.addAction(MUSIC_START);
filter.addAction(MUSIC_END);
filter.addAction(UsbManager.ACTION_USB_DEVICE_ATTACHED);
filter.addAction(UsbManager.ACTION_USB_DEVICE_DETACHED);
getContext().registerReceiver(mBroadcastReceiver,filter);

private BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        switch(intent.getAction()){

            case MUSIC_STATUSBAR:
                mHeadUpMusic.setVisibility(View.VISIBLE);
                mIconMusic.setVisibility(View.VISIBLE);
                String string = (String) intent.getStringExtra("Music_Status");
                updateHeadUpMusic(string);
                break;
            case MUSIC_START:
                mHeadUpMusic.setVisibility(View.VISIBLE);
                mIconMusic.setVisibility(View.VISIBLE);
                String string1 = (String) intent.getStringExtra("StatusBar_Music_Msg");    
                updateHeadUpMusic(string1);
                break;
            case MUSIC_END:
                mHeadUpMusic.setVisibility(View.GONE);
                mIconMusic.setVisibility(View.GONE);
                Log.i("MUSIC_END","GONE");
                break;
            case UsbManager.ACTION_USB_DEVICE_ATTACHED:
                mIconUsb.setVisibility(View.VISIBLE);
                break;
            case UsbManager.ACTION_USB_DEVICE_DETACHED:
                mIconUsb.setVisibility(View.GONE);
                break;
      }
        
    }
};
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

sunxiaolin2016

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

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

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

打赏作者

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

抵扣说明:

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

余额充值