資源描述:
《android service和activity基于串口藍(lán)牙模塊的雙向通信》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、AndroidService和Activity基于串口藍(lán)牙模塊的雙向通信驅(qū)動(dòng)藍(lán)牙模塊可以在Activity中直接調(diào)用,也可以在多線程下直接使用,但這樣會(huì)存在一個(gè)缺陷:當(dāng)你按下手機(jī)的Home或者Back鍵的時(shí)候.程序退出了,下次你重新啟動(dòng)軟件的時(shí)候又需要重新建立藍(lán)牙的鏈接了.為了克服以上問題,我把藍(lán)牙模塊的調(diào)用放到Service里面使用.首先對(duì)Service說明下:(來源于http://tianrui-wang-163-com.iteye.com/blog/983099)Service介紹Android中的服務(wù)和w
2、indows中的服務(wù)是類似的東西,服務(wù)一般沒有用戶操作界面,它運(yùn)行于系統(tǒng)中不容易被用戶發(fā)覺,可以使用它開發(fā)如監(jiān)控之類的程序。由于沒有可視化界面,Service都是從其它程序組件中啟動(dòng)、停止和控制,這些組件包括其它的Service、Activity和BroadcastReceiver。如果你的應(yīng)用程序正常且不間斷的運(yùn)行,而不直接依賴于用戶輸入,Service是你最佳的選擇。Service生命周期服務(wù)常用生命周期回調(diào)方法如下:onCreate()該方法在服務(wù)被創(chuàng)建時(shí)調(diào)用,該方法只會(huì)被調(diào)用一次,無論調(diào)用多少次start
3、Service()或bindService()方法,服務(wù)也只被創(chuàng)建一次。onDestroy()該方法在服務(wù)被終止時(shí)調(diào)用。Service對(duì)象不能自己?jiǎn)?dòng),需要通過某個(gè)Activity、Service或者其他Context對(duì)象來啟動(dòng)。啟動(dòng)的方法有兩種,Context.startService和Context.bindService()。兩種方式的生命周期是不同的,具體如下所示。Context.startService方式的生命周期:?jiǎn)?dòng)時(shí),startService–>onCreate()–>onStart()停止時(shí),
4、stopService–>onDestroy()Context.bindService方式的生命周期:綁定時(shí),bindService->onCreate()–>onBind()解綁定時(shí),unbindService–>onUnbind()–>onDestory()Service實(shí)現(xiàn)定義一個(gè)Service只需要如下兩步:第一步:繼承Service類publicclassSMSServiceextendsService{}這里可以選擇要實(shí)現(xiàn)的方法第二步:在AndroidManifest.xml文件中的5、ion>節(jié)點(diǎn)里對(duì)服務(wù)進(jìn)行配置:好了,廢話少說,下面從我的代碼直接開始:[java]viewplaincopyprint?packagecom.lxx;importjava.io.IOException;importjava.io.InputStream;importjava.io.OutputStream;importjava.util.UUID;importandroid.app.Service;importandroi
6、d.bluetooth.BluetoothAdapter;importandroid.bluetooth.BluetoothDevice;importandroid.bluetooth.BluetoothSocket;importandroid.content.BroadcastReceiver;importandroid.content.Context;importandroid.content.Intent;importandroid.content.IntentFilter;importandroid.os
7、.IBinder;importandroid.util.Log;publicclassMyServiceextendsService{publicbooleanthreadFlag=true;MyThreadmyThread;CommandReceivercmdReceiver;//繼承自BroadcastReceiver對(duì)象,用于得到Activity發(fā)送過來的命令/**************service命令*********/staticfinalintCMD_STOP_SERVICE=0x01;stati
8、cfinalintCMD_SEND_DATA=0x02;staticfinalintCMD_SYSTEM_EXIT=0x03;staticfinalintCMD_SHOW_TOAST=0x04;privateBluetoothAdaptermBluetoothAdapter=null;privateBluetoothSocketbtSocket=null;privateO