色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何更效率的創建Android BLE應用程序

454398 ? 來源:網絡整理 ? 作者:網絡整理 ? 2019-12-12 10:00 ? 次閱讀

步驟1:創建新的Android項目

打開Eclipse,打開File-》 New-》 Android Application Project ,然后在“應用程序名稱”編輯框中填寫應用程序名稱,例如BleExample或其他。最低必需的SDK選擇API18:Android 4.3,并且目標SDK也選擇API18:Android 4.3,因為buletooth 4.0必須具有Android 4.3版本或更高版本。其他默認保持不變,請繼續單擊“下一步”按鈕,直到出現“完成”按鈕,然后單擊“完成”按鈕。

步驟2:添加權限和服務

在清單文件中添加以下代碼:

步驟3:創建ListView項目布局文件

旨在顯示ListView的每個內容,此處我們使用自定義(自己定義),以便每個ListView可以顯示更多內容,item_list.xml如下所示:

將BleExample/com.elecfreaks.ble的源代碼復制到您的項目src目錄中,然后在出現錯誤提示的情況下按Shift + Ctrl + O鍵打開文件。

步驟4:修改Activity_main.xml,增加ScanButton和BleDeviceListView

增加的內容如下所示:

android:id=“@+id/scanButton”

android:layout_width=“fill_parent”

android:layout_height=“wrap_content”

android:onClick=“scanOnClick”

android:text=“scan” /》

android:id=“@+id/bleDeviceListView”

android:layout_width=“fill_parent”

android:layout_height=“wrap_content”

android:layout_alignLeft=“@+id/scanButton”

android:layout_below=“@+id/scanButton”

android:layout_above=“@+id/sendButton”

步驟5:在MainActivity.java中,添加響應事件的ScanButton方法

(onClick=“scanOnClick”)

public void scanOnClick(final View v){

}

步驟6:為MainActivity添加成員

private Button scanButton;

private ListView bleDeviceListView;

private BLEDeviceListAdapter listViewAdapter;

private BluetoothHandler bluetoothHandler;

private boolean isConnected;

步驟7:在MainActivity.onCreate中設置成員值

scanButton = (Button) findViewById(R.id.scanButton);

bleDeviceListView = (ListView)

findViewById(R.id.bleDeviceListView);

listViewAdapter = new BLEDeviceListAdapter(this);

bluetoothHandler = new BluetoothHandler(this);

bluetoothHandler.setOnConnectedListener(new

OnConnectedListener() {

@Override

public void onConnected(boolean isConnected) {

// TODO Auto-generated method stub

setConnectStatus(isConnected);

}

});

bluetoothHandler.setOnRecievedDataListener(new OnRecievedDataListener() {

@Override

public void onRecievedData(byte[] bytes) {

// TODO Auto-generated method stub

System.out.printf(“REC:”);

for(byte b:bytes)

System.out.printf(“%02X ”, b);

System.out.printf(“ ”);

}

});

步驟8:添加SetConnectStatus Mothod

public void setConnectStatus(boolean isConnected){

this.isConnected = isConnected;

if(isConnected){

showMessage(“Connection successful”);

scanButton.setText(“break”);

}else{

bluetoothHandler.onPause();

bluetoothHandler.onDestroy();

scanButton.setText(“scan”);

}

}

private void showMessage(String str){

Toast.makeText(MainActivity.this, str,

Toast.LENGTH_SHORT).show();

}

步驟9:在ScanOnClick中添加內容

if(!isConnected){

bleDeviceListView.setAdapter(bluetoothHandler.getDeviceListAdapter));

bleDeviceListView.setOnItemClickListener(new OnItemClickListener()

{

@Override

public void onItemClick(AdapterView parent, View view,

int position, long id) {

String buttonText = (String) ((Button)v).getText();

if(buttonText.equals(“scanning”)){

showMessage(“scanning.。.”){

return ;

}

BluetoothDevice device = bluetoothHandler.getDeviceListAdapter().getItem(position).device;

// connect

bluetoothHandler.connect(device.getAddress());

}

});

bluetoothHandler.setOnScanListener(new OnScanListener() {

@Override

public void onScanFinished() {

// TODO Auto-generated method stub

((Button)v).setText(“scan”);

((Button)v).setEnabled(true);

}

@Override

public void onScan(BluetoothDevice device, int rssi, byte[] scanRecord) {}

});

((Button)v).setText(“scanning”);

((Button)v).setEnabled(false);

bluetoothHandler.scanLeDevice(true);

}else{

setConnectStatus(false);

}

步驟10:發送數據

byte[] data = new byte[1];

data[0] = 0x02;

bluetoothHandler.sendData(data);

步驟11:接收數據

在接收到數據之后,

從bluetoothHandler.setOnRecievedDataListener()OnRecievedDataListener.onRecievedData(byte [] bytes)設置的OnRecievedDataListener.onRecievedData(byte [] bytes),字節表示接收到的數據

步驟12 :通過協議將數據發送到MCU。(在ElecFreaks中使用BLUNO)

在src目錄中,創建Transmitter.java,ad用以下兩個參數確定構造函數:

public Transmitter(Context context,

BluetoothHandler bluetoothHandler){

this.context = context;

this.mBluetoothHandler = bluetoothHandler;

}

如何添加sendData()?

private void sendData(byte[] bytes){

mBluetoothHandler.sendData(bytes);

}

步驟13:接收MCU協議數據

MCU數據接收和發送協議使用JSON數據包,格式為{“ T”:您的值,“ V”:您的值,…}。當然,您可以定義其他值。在src目錄中創建MyArray.java,以連接兩個陣列。代碼如下所示:

public class MyArray {

static public byte[] arrayCat(byte[] buf1,byte[] buf2){

byte[] bufret=null;

int len1 = 0;

int len2 = 0;

if(buf1 != null)

len1 = buf1.length;

if(buf2 != null)

len2 = buf2.length;

if(len1+len2 》 0)

bufret = new byte[len1+len2];

if(len1 》 0)

System.arraycopy(buf1, 0, bufret, 0, len1);

if(len2 》 0)

System.arraycopy(buf2, 0, bufret, len1, len2);

return bufret;

}

}

將示例代碼中的protocol.java復制到src目錄中,添加成員

private Protocol protocol

從onCreate(),刪除:

bluetoothHandler.setOnRecievedDataListener();

添加:

protocol = new Protocol(this, new Transmitter(this, bluetoothHandler));

protocol.setOnReceivedDataListener(recListener);

在MainActivity中添加成員:

private static final boolean INPUT = false;

private static final boolean OUTPUT = true;

private static final boolean LOW = false;

private static final boolean HIGH = true;

private boolean digitalVal[];

private int analogVal[];

在onCreate中初始化:

digitalVal = new boolean[14];

analogVal = new int[14];

private OnReceivedRightDataListener recListener = new

OnReceivedRightDataListener() {

@Override

public int onReceivedData(String str) {

// TODO Auto-generated method stub

try {

JSONObject readJSONObject = new JSONObject(str);

int type = readJSONObject.getInt(“T”);

int value = readJSONObject.getInt(“V”);

switch(type){

case Protocol.ANALOG:{

int pin = readJSONObject.getInt(“P”);

analogVal[pin] = value;

}break;

case Protocol.DIGITAL:{

int pin = readJSONObject.getInt(“P”);

digitalVal[pin] = (value》0)?HIGH:LOW;

}break;

case Protocol.TEMPERATURE:{

float temperature = ((float)value)/100;

}break;

case Protocol.HUMIDITY:{

float humidity = ((float)value)/100;

}break;

default:break;

}

} catch (JSONException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

return 0;

}

};

步驟14:使用協議發送數據

protocol.writeAnalogData(9, 20);

protocol.writeDigitalData(3, 1);

步驟15:使用協議接收數據

protocol.readAnalogDataCommand(9);

protocol.readDigitalDataCommand(3);

注意:返回的數據由recListener接收

步驟16:MCU端口協議(arduino

請參閱提供的AndroidIOControl的示例代碼。

責任編輯:wv

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Android
    +關注

    關注

    12

    文章

    3941

    瀏覽量

    127723
收藏 人收藏

    評論

    相關推薦

    android手機上emulate應用程序的方法

    Android手機上模擬(emulate)應用程序的方法通常涉及到使用Android模擬器(Emulator)或類似的工具來模擬Android環境,以便在沒有實際物理設備的情況下運行
    的頭像 發表于 12-05 15:33 ?419次閱讀

    使用OpenVINO? ElectronJS中創建桌面應用程序

    的用戶體驗。 1 應用程序概覽:一種簡單的背景虛化方法 這個演示展示了如何在 Node.js 環境中使用 OpenVINO 工具包實現背景虛化,并通過 Electron.js 創建的直觀桌面界面進行
    的頭像 發表于 11-25 11:35 ?235次閱讀
    使用OpenVINO? ElectronJS中<b class='flag-5'>創建</b>桌面<b class='flag-5'>應用程序</b>

    CYC8PROTO-063-BLE是否可以通過智能手機上的標準設置應用程序建立連接?

    你好,我是使用 BLE 的新手,正在使用 CYC8PROTO-063-BLE 板,我想知道是否可以通過智能手機(iOS 或 Android)上的標準設置應用程序建立連接。 到目前為止,
    發表于 07-23 08:20

    如何在Android 10設備上通過App控制GPIO

    本文檔提供了在 Android 10 設備上通過應用程序(App)控制通用輸入輸出(GPIO)的詳細指南。這涵蓋了從創建 gpio驅動到App 配置 以及 SELinux 策略以允許特定訪問的所有必要步驟。
    的頭像 發表于 07-22 17:59 ?1314次閱讀

    Anthropic推出Claude Android應用程序,挑戰ChatGPT市場地位

    在人工智能領域的激烈競爭中,新興力量Anthropic于本周二正式推出了其備受矚目的Claude Android應用程序,標志著這家公司在多平臺布局上邁出了重要一步,旨在通過提供更廣泛、更便捷的訪問方式,吸引并留住用戶,從而在與ChatGPT等巨頭的競爭中脫穎而出。
    的頭像 發表于 07-17 17:24 ?1097次閱讀

    CYC8PROTO-063-BLE嘗試連接AIROC移動應用程序時,TeraTerm中就會出現大量錯誤信息,為什么?

    我目前正在使用 CYC8PROTO-063-BLE 套件,并試圖在 ModusToolBox 3.2 中運行 Bluetoothe_LE_Findme 示例代碼。 程序在電路板上運行正常,但每當
    發表于 07-05 06:03

    安裝在Android 14上的LE OTA應用程序無法使用是怎么回事?

    你好。 LE OTA 應用程序示例代碼無法在 Android 14 智能手機上運行。 點擊更新按鈕時,顯示"abort" ,OTA 進程無法繼續。 13 及以下版本沒有問題。 為什么會這樣?
    發表于 07-05 06:01

    使用Android9操作系統測試BLE功能,BLE連接失敗的原因?

    我們正在使用 Android9 操作系統測試 BLE 功能。 在測試過程中,我們發現 BLE 連接失敗,錯誤顯示\" bt_smp[i]: dhkey chcks do nomatch
    發表于 05-27 06:10

    CYW20829從Eclipse為Modustoolbox創建\"新應用程序時出現錯誤\"的原因?

    CYW20829]從 Eclipse 為 Modustoolbox 創建\"新應用程序時出現錯誤\"
    發表于 05-22 06:12

    【從0開始創建AWTK應用程序】編譯應用到RTOS平臺

    AWTK是基于C語言開發的跨平臺GUI框架。本系列文章介紹如何從0開始創建AWTK應用程序,包括搭建開發調試環境、使用AWTK創建Hello工程并在模擬器上運行、將AWTK應用程序移植
    的頭像 發表于 03-21 08:23 ?655次閱讀
    【從0開始<b class='flag-5'>創建</b>AWTK<b class='flag-5'>應用程序</b>】編譯應用到RTOS平臺

    ST BLE Toolbox Android下載打不開怎么解決?

    在官網上下載ST BLE Toolbox-Android,但是發現半天都打不開網站,嘗試了點開IOS的卻一下子就進去了,這是什么問題哦
    發表于 03-18 06:45

    Psoc4 ble設備無法掃描PC和安卓手機是為什么?

    。 為什么?(PC和Android手機 CAN 廣告和s同時CAN )。 我使用的是 Psoc 4 ble 4.2 版本的設備和 Psoc creator 4.4 版本。 掃描 PC 和 Android 手機需要配置或
    發表于 03-01 11:30

    將Wiced 6.6用于BLE應用程序,執行10字節的簡單讀取操作時需要超過100毫秒的原因?

    我正在將 Wiced 6.6 用于我們現有的基于 BLE應用程序之一。 本產品使用了 CYW4343 無線藍牙組合模塊。 我已將設備配置為服務器。 在客戶端執行 10 字節的簡單讀取操作時,即使
    發表于 03-01 08:10

    使用modustoolBox為psoc4 4100S Max Pioneer Kit創建演示應用程序失敗了的原因?

    不確定這是否是最好的去處。 正在嘗試使用 modustoolBox 為 psoc4 4100S Max Pioneer Kit 創建演示應用程序。 具體來說,是演示 CSD 觸摸板應用程序。 在構建
    發表于 01-31 08:15

    在ModuStoolBox環境之外開發應用程序時應該考慮哪些因素?

    我正在邁出CY8CPROTO-063-BLE平臺的第一步,并希望在ModusToolbox生態系統之外創建自己的引導代碼。 對開發板進行編程后,我嘗試調試這個小啟動代碼。 但是,CM0+內核似乎
    發表于 01-25 06:38
    主站蜘蛛池模板: 精品无码日本蜜桃麻豆| 国产亚洲精品久久久无码狼牙套 | 中文字幕不卡一区二区三区| 性做久久久久久久久浪潮| 十分钟免费观看高清视频大全| 日本高清无人区影院| 欧美午夜特黄AAAAAA片| 欧美美女论坛| 欧美日韩免费看| 青青草原网址| 欧洲videosdesrxotv| 秋霞电影伦网理最新在线看片| 女人把腿张开叫男人桶免费视频| 蜜桃视频无码区在线观看| 麻花传媒XK在线观看| 免费人妻AV无码专区五月| 嗯啊哈啊好棒用力插啊| 欧美激情精品久久久久| 青柠在线观看视频在线高清完整 | 亚洲精品6久久久久中文字幕| 亚洲高清视频网站| 亚洲国产在线2020最新| 亚洲精品免播放器在线观看| 亚洲人成影院在线播放| 医生含着我的奶边摸边做| 最近日本免费观看MV免费| 99热国产这里只有精品9九| 爱暖暖1000部免费| 国产成人a视频在线观看| 国产午夜精品理论片久久影视| 狠狠撩色姣姣综合久久| 久久精品视频15人人爱在线直播| 凌馨baby| 欧美怡红院视频一区二区三区| 国产69TV精品久久久久99| 国产av久久免费观看| 国产午夜亚洲精品区| 久久精品国产99欧美精品亚洲| 免费精品国产日韩热久久 | 5566精品资源在线播放| 99精品国产免费观看视频|