經(jīng)典藍(lán)牙數(shù)據(jù)收發(fā)和格式處理

開發(fā)過程中會遇到藍(lán)牙開發(fā),目前藍(lán)牙分兩種,一種3.0經(jīng)典藍(lán)牙,可以大數(shù)據(jù)傳輸?shù)?,可以傳輸圖片,歌曲和視頻的;一種是4.0低功耗藍(lán)牙,傳輸小字節(jié)的,比如藍(lán)牙手環(huán);經(jīng)典藍(lán)牙用途也很多,很多單片機控件也是通過藍(lán)牙串口收發(fā)指令進行動作的;

請下載demo經(jīng)典藍(lán)牙

這里是最基本的藍(lán)牙,能收發(fā)數(shù)據(jù)

這個藍(lán)牙的用法也很簡單,首先要淘寶買個經(jīng)典藍(lán)牙的模塊然后通過usb將模塊連接到電腦,在電腦端打開串口助手就可以在串口助手當(dāng)中看到app發(fā)送過來的數(shù)據(jù)(藍(lán)牙模塊傳輸對于小白來說可能看起來會有點懵,這里不做詳細(xì)贅述)

這里詳細(xì)解說一下MainActivity

界面很簡單就是一個連接按鈕和讓設(shè)備可見按鈕,還有一個發(fā)送數(shù)據(jù)按鈕和一個接收內(nèi)容的TextView;

藍(lán)牙連接的邏輯

  • 獲得BluetoothAdapter
  • 判斷有沒有藍(lán)牙
  • 有的話那就打開藍(lán)牙
  • 藍(lán)牙初始化
  • 通過藍(lán)牙地址建立連接
  • 收發(fā)數(shù)據(jù)

藍(lán)牙連接在6.0系統(tǒng)運行的話就要考慮到權(quán)限問題,藍(lán)牙需要一個定位的權(quán)限這里是通過一個監(jiān)聽事件來獲得權(quán)限的,也可以在初始化中獲得權(quán)限

權(quán)限庫依賴
 compile 'me.weyye.hipermission:library:1.0.3'
定位權(quán)限
   <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
 //進入藍(lán)牙   動態(tài)申請定位權(quán)限
        ic = (ImageView) findViewById(R.id.ic);
        ic.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //單獨的權(quán)限只叫ondeny和onguarantee
             HiPermission.create(LoginActivity.this).checkSinglePermission(Manifest.permission.ACCESS_COARSE_LOCATION, new PermissionCallback() {
                    @Override
                    public void onClose() {
                        Toast.makeText(LoginActivity.this, "用戶關(guān)閉權(quán)限申請", Toast.LENGTH_SHORT).show();

                    }
                    @Override
                    public void onFinish() {
                        Toast.makeText(LoginActivity.this, "所有權(quán)限申請完成", Toast.LENGTH_SHORT).show();
                    }
                    @Override
                    public void onDeny(String permisson, int position) {
                        Toast.makeText(LoginActivity.this, "快開啟權(quán)限", Toast.LENGTH_SHORT).show();

                    }
                    @Override
                    public void onGuarantee(String permisson, int position) {
                      //  startActivity(new Intent(LoginActivity.this,BluetoothActivity.class));
                    }
                });

            }
        });

里面除了Mainactivity其他的基本上不需要動,開發(fā)過程可能會遇到些問題那就是收發(fā)數(shù)據(jù)的格式,具體問題具體分析,也就是說你要是在單片機中發(fā)送中文的話,要以GBK格式發(fā)送,接收數(shù)據(jù)的話可能會出現(xiàn)串行,用起來的話可能會遇到各種問題,不過花點時間都是可以解決的,這個也是谷歌的官方DEMO;

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容