博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android4.0-4.4 加入支持状态栏显示耳机图标方法(支持带不带MIC的两种耳机自己主动识别)...
阅读量:6913 次
发布时间:2019-06-27

本文共 2517 字,大约阅读时间需要 8 分钟。

效果如图:

一、 在frameworks/base/packages/SystemUI/res/values/strings.xml 里加入

         

  1. <string name="headset_enabled">Headset Enabled.</string>  

二、 在fameworks/base/core/res/res/values/config.xml 里对应位置加入:

  1. @@ -45,6 +45,7 @@  
  2.         <item><xliff:g id="id">alarm_clock</xliff:g></item>  
  3.         <item><xliff:g id="id">secure</xliff:g></item>  
  4.         <item><xliff:g id="id">clock</xliff:g></item>  
  5. +       <item><xliff:g id="id">headset</xliff:g></item>  
  6.      </string-array>  


上面带+号的行为加入的

三、 frameworks/base/packages/SystemUI/res/drawable-xhdpi 或者你手机相应的分辨率的目录下加入stat_sys_headset.png和stat_sys_headset_mic.png

两个图片, 分别表示不带mic的耳机和带mic的耳机, 这两个图标将在状态栏显示, 图片能够自己找,也能够从fameworks/base/core/res/res/drawable-xhdpi里面提取现成的

四、 在frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarPolicy.java 打上以下的补丁:

  1. --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarPolicy.java  
  2. +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarPolicy.java  
  3. @@ -103,6 +103,9 @@ public class PhoneStatusBarPolicy {  
  4.              else if (action.equals(TtyIntent.TTY_ENABLED_CHANGE_ACTION)) {  
  5.                  updateTTY(intent);  
  6.              }  
  7. +            else if (action.equals(Intent.ACTION_HEADSET_PLUG)) {  
  8. +                updateHeadset(intent);  
  9. +            }  
  10.          }  
  11.      };  
  12.    
  13. @@ -119,6 +122,7 @@ public class PhoneStatusBarPolicy {  
  14.          filter.addAction(BluetoothAdapter.ACTION_CONNECTION_STATE_CHANGED);  
  15.          filter.addAction(TelephonyIntents.ACTION_SIM_STATE_CHANGED);  
  16.          filter.addAction(TtyIntent.TTY_ENABLED_CHANGE_ACTION);  
  17. +        filter.addAction(Intent.ACTION_HEADSET_PLUG);  
  18.          mContext.registerReceiver(mIntentReceiver, filter, null, mHandler);  
  19.    
  20.          int numPhones = MSimTelephonyManager.getDefault().getPhoneCount();  
  21. @@ -276,4 +280,29 @@ public class PhoneStatusBarPolicy {  
  22.              mService.setIconVisibility("tty"false);  
  23.          }  
  24.      }  
  25. +  
  26. +    private final void updateHeadset(Intent intent) {  
  27. +        final String action = intent.getAction();  
  28. +        final int state = intent.getIntExtra("state", 4);  
  29. +        final int mic = intent.getIntExtra("microphone", 4);  
  30. +  
  31. +        switch (state) {  
  32. +        case 0:  
  33. +            try{  
  34. +                mService.setIconVisibility("headset"false);  
  35. +            } catch (Exception e) {  
  36. +                //Log.i("StatusBar Headset", "frist time to run");  
  37. +                }  
  38. +        break;  
  39. +        case 1:  
  40. +            if (mic == 1)  
  41. +                mService.setIcon("headset", R.drawable.stat_sys_headset_mic, 0,  
  42. +                    mContext.getResources().getString(R.string.headset_enabled));  
  43. +            else  
  44. +                mService.setIcon("headset", R.drawable.stat_sys_headset, 0,  
  45. +                    mContext.getResources().getString(R.string.headset_enabled));  
  46. +            mService.setIconVisibility("headset"true);  
  47. +        break;  
  48. +        }  
  49. +    }  
  50.  }  


smali版本号參考本人github上的lewa的patchrom代码:

当然要结合上面的源代码, 只作为參考 由于跟你的smali代码应该会差异非常大

你可能感兴趣的文章
CF280C Game on Tree
查看>>
CF1137C Museums Tour
查看>>
一劳永逸的搞定 FLEX 布局(转)
查看>>
分享一款基于Windows Phone 7的Metro样式的Silverlight主题
查看>>
http错误码
查看>>
C#中选择文件夹的对话框控件(转)
查看>>
简易处理图片在div中居中铺满
查看>>
数据库连接不上服务器及数据导入不成功问题
查看>>
你以为的ASP.NET文件上传大小限制是你以为的吗
查看>>
CentOS 7 :Failed to start IPv4 firewall with iptables.
查看>>
Linux后台研发面试题
查看>>
有趣的浏览器手势,工作帮大忙
查看>>
【转载】SQL注入攻防入门详解
查看>>
iOS 一个开发者账号 多台Mac 共用
查看>>
iOS App图标和启动画面尺寸
查看>>
windows phone mango 页面跳转事件顺序
查看>>
人工智能实战2019第六次作业——尹正超
查看>>
“Bootstrap做的响应式菜单在iPhone上点击不了二级菜单“的解决办法!
查看>>
1176(动规)
查看>>
UVa 673 - Parentheses Balance
查看>>