Android 7.0 블 루 투 스 장치 전기량 가 져 오기

5983 단어 Android7.0framework
레 퍼 런 스http://blog.csdn.net/jcxxxxx55/article/details/52847291?locationNum=4&fps=1
1.HeadsetStateMachine packages/apps/Bluetooth/src/com/android/bluetooth/hfp/HeadsetStateMachine.java Bluetooth Assigned Numbers.GOOGLE 는 어느 회사 의 것 을 마음대로 사용 하 는 지 기억 하고 라디오 에 계속 등록 하 세 요.process VendorSpecification at 는 어떤 at command 가 지원 하지 않 는 다 면 추가 할 수 있 습 니 다.
    static {
        classInitNative();

        VENDOR_SPECIFIC_AT_COMMAND_COMPANY_ID = new HashMap();
        VENDOR_SPECIFIC_AT_COMMAND_COMPANY_ID.put("+XEVENT", BluetoothAssignedNumbers.PLANTRONICS);
        VENDOR_SPECIFIC_AT_COMMAND_COMPANY_ID.put("+ANDROID", BluetoothAssignedNumbers.GOOGLE);
//aaron
Log.e("a", "put IPHONEACCEV " );
        VENDOR_SPECIFIC_AT_COMMAND_COMPANY_ID.put("+XAPL", BluetoothAssignedNumbers.GOOGLE);
        VENDOR_SPECIFIC_AT_COMMAND_COMPANY_ID.put("+IPHONEACCEV", BluetoothAssignedNumbers.GOOGLE);
    }

2.라디오 BluetoothSettings packages/apps/Settings/src/com/android/settings/bluetooth/BluetoothSettings.java 를 등록 하여 settings 의 블 루 투 스 인터페이스 에 라디오 를 등록 한 후 전 기 를 표시 합 니 다.
        //aaron
        IntentFilter filter=new IntentFilter();
        filter.addAction(BluetoothHeadset.ACTION_VENDOR_SPECIFIC_HEADSET_EVENT);
        //filter.addCategory(BluetoothHeadset.VENDOR_SPECIFIC_HEADSET_EVENT_COMPANY_ID_CATEGORY+"."+BluetoothAssignedNumbers.GOOGLE);
        filter.addCategory(BluetoothHeadset.VENDOR_SPECIFIC_HEADSET_EVENT_COMPANY_ID_CATEGORY+"."+BluetoothAssignedNumbers.GOOGLE);
        getActivity().registerReceiver(mIntentReceiver,filter);
        Log.i("a", "registerReceiver ");
        //end


    private BroadcastReceiver mIntentReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            final String action = intent.getAction();
            if (action.equals(BluetoothHeadset.ACTION_VENDOR_SPECIFIC_HEADSET_EVENT)) {
                Log.i("a", "intent "+intent);
                String command = intent.getStringExtra(BluetoothHeadset.EXTRA_VENDOR_SPECIFIC_HEADSET_EVENT_CMD);

                if ("+IPHONEACCEV".equals(command)) {
                    Object[] args = (Object[]) intent.getSerializableExtra(BluetoothHeadset.EXTRA_VENDOR_SPECIFIC_HEADSET_EVENT_ARGS);
                    if (args.length >= 3 && args[0] instanceof Integer && ((Integer)args[0])*2+1<=args.length) {
                        for (int i=0;i0]);i++) {
                            if (!(args[i*2+1] instanceof Integer) || !(args[i*2+2] instanceof Integer)) {
                                continue;
                            }
                            if (args[i*2+1].equals(1)) {
                                float level = (((Integer)args[i*2+2])+1)/10.0f;
                                Log.i("a", "battery "+level);
                                break;
                            }
                        }
                    }
                }
            }
        }
    };

HFP 명령 AT+IPHONEACCEV 첨부
설명:이어폰 상태 변경 을 보고 하 는 발기인:이어폰 형식:AT+IPHONEACCEV=[Number of key/value pairs],[key 1],[val 1],[key 2],[val 2],...매개 변수:Number of key/value pairs:다음 매개 변수의 수량 key:보 고 된 상태 변화 유형 1=전기량 등급 2=일시 정지 상태 val:변 경 된 값 Battery events:0-9 사이 의 숫자 문자열 A string value between'0'and'9'.Dock state:0=undocked,1=docked.Example:AT+IPHONEACCEV=1,1,3

좋은 웹페이지 즐겨찾기