安卓 創建手錶wear應用 並實現與app藍牙通訊

記憶力下降的厲害,年前做的demo,年後就忘了差不多了,當然也有一部分原因是因爲這個年假確實有點長,,,,whatever,還是寫個博客記錄一下,忘了也有地方找

結果,還是忘了,,,

貼兩個地址吧

谷歌官方文檔

如何調試wear應用

wear應用和手機端通過藍牙互相傳數據方面,有個數據層,手機端數據改變發送到數據層,數據層會隨之改變,並在wear應用打開的時候通知監聽

wear方面的監聽

package com.example.win.aodwear2;

import android.content.SharedPreferences;
import android.util.Log;
import android.widget.Toast;

import com.google.android.gms.wearable.Asset;
import com.google.android.gms.wearable.DataEvent;
import com.google.android.gms.wearable.DataEventBuffer;
import com.google.android.gms.wearable.DataItem;
import com.google.android.gms.wearable.DataMap;
import com.google.android.gms.wearable.DataMapItem;
import com.google.android.gms.wearable.MessageEvent;
import com.google.android.gms.wearable.WearableListenerService;

/**
 * Created by win on 2019/12/25.
 */

public class DataLayerListenerService extends WearableListenerService{

    private CtrApp app;

    @Override
    public void onCreate() {
        super.onCreate();
        app = (CtrApp) getApplication();
    }

    @Override
    public void onMessageReceived(MessageEvent messageEvent) {
        super.onMessageReceived(messageEvent);
        System.out.println("消息=========");
    }

    @Override
    public void onDataChanged(DataEventBuffer dataEventBuffer) {
        System.out.println("收到的數據變化ondatachanged222===");

        Log.i("info", "數據發生變化嘍");


        for (DataEvent event : dataEventBuffer) {
            if (event.getType() == DataEvent.TYPE_CHANGED) {
                String typeString = event.getDataItem().getUri().getPath();
                DataItem item = event.getDataItem();
                DataMap map = DataMapItem.fromDataItem(item).getDataMap();
                //item.getUri().getPath().compareTo("/count") == 0
                if ("/image".equals(typeString)) {
                    Log.i("info", "是圖片");
                    Asset mAsset = map.getAsset("asset");
                } else if (typeString.compareTo("/bledata") == 0){
                    app.dev_name = map.getString("dev_name");
                    app.bt_key = map.getString("bt_key");

                    app.isbleconnect=0;

                    SharedPreferences.Editor editor = getSharedPreferences("login", MODE_PRIVATE).edit();
                    editor.putString("dev_name", app.dev_name);
                    editor.putString("bt_key", app.bt_key);
                    editor.commit();
                    System.out.println("數據變化類型事件:222"+app.dev_name+"=="+app.bt_key);
                    Toast.makeText(getApplicationContext(),"車輛更換,正在重新連接藍牙",Toast.LENGTH_LONG).show();
                    //Log.i("info", "數據變化類型事件:" + getString);
                }
            } else if (event.getType() == DataEvent.TYPE_DELETED) {
                Log.i("info", "數據刪除");
            }
        }

//        for (DataEvent event : dataEventBuffer) {
//            if (event.getType() == DataEvent.TYPE_CHANGED) {
//                // DataItem changed
//                DataItem item = event.getDataItem();
//                if (item.getUri().getPath().compareTo("/count") == 0) {
//                    DataMap dataMap = DataMapItem.fromDataItem(item).getDataMap();
//                    String date = dataMap.getString("btkey");
//                    System.out.println("收到的數據==="+date);
//                    Toast.makeText(this,date,Toast.LENGTH_SHORT).show();
//
//                    //updateCount(dataMap.getInt(COUNT_KEY));
//                }
//            } else if (event.getType() == DataEvent.TYPE_DELETED) {
//                // DataItem deleted
//            }
//        }

    }
}

手機端同步數據層:

    //與手錶通訊部分,暫不開啓
    public int iswearopen=0;
    public void changeDevName(String dev_name,String bt_key){
        if (iswearopen==0){
            return;
        }
        SharedPreferences read = getSharedPreferences("login", MODE_PRIVATE);
        String olddev_name = read.getString("dev_name", "");
        if(!TextUtils.isEmpty(dev_name)&&!TextUtils.isEmpty(olddev_name)&&!dev_name.equals(olddev_name)){
            if (isgooglecon==1) {
                PutDataMapRequest mapRequest = PutDataMapRequest.create("/samedata");
                DataMap dataMap = mapRequest.getDataMap();
                dataMap.putString("dev_name", dev_name);
                dataMap.putString("bt_key", bt_key);
                mapRequest.setUrgent();
                PutDataRequest dataRequest = mapRequest.asPutDataRequest();
                dataRequest.setUrgent();
                Wearable.DataApi.putDataItem(mGoogleAppiClient, dataRequest).setResultCallback(new ResultCallback<DataApi.DataItemResult>() {


                    @Override
                    public void onResult(DataApi.DataItemResult arg0) {
                        if (!arg0.getStatus().isSuccess()) {
                        } else {
                            Log.i("info", "發送成功了");
                            //Toast.makeText(MainActivity.this, "Notification  Success", Toast.LENGTH_LONG).show();
                        }
                    }
                });
            } else {
                Log.i("info", "沒連上");
            }
        }
    }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章