BlueToothchat 範例學習


從Bluetoothchat裡面學習到
一開始的UUID 其實是使用到那些裝置的代碼
如果不是使用藍芽串口服務,會導致連接裝置不停顯示連接錯誤

关于UUID

ServiceDiscoveryServerServiceClassID_UUID = '{00001000-0000-1000-8000-00805F9B34FB}'
BrowseGroupDescriptorServiceClassID_UUID = '{00001001-0000-1000-8000-00805F9B34FB}'
PublicBrowseGroupServiceClass_UUID = '{00001002-0000-1000-8000-00805F9B34FB}'

#蓝牙串口服务
SerialPortServiceClass_UUID = '{00001101-0000-1000-8000-00805F9B34FB}'

LANAccessUsingPPPServiceClass_UUID = '{00001102-0000-1000-8000-00805F9B34FB}'

#拨号网络服务
DialupNetworkingServiceClass_UUID = '{00001103-0000-1000-8000-00805F9B34FB}'

#信息同步服务
IrMCSyncServiceClass_UUID = '{00001104-0000-1000-8000-00805F9B34FB}'

SDP_OBEXObjectPushServiceClass_UUID = '{00001105-0000-1000-8000-00805F9B34FB}'

#文件传输服务
OBEXFileTransferServiceClass_UUID = '{00001106-0000-1000-8000-00805F9B34FB}'

IrMCSyncCommandServiceClass_UUID = '{00001107-0000-1000-8000-00805F9B34FB}'
SDP_HeadsetServiceClass_UUID = '{00001108-0000-1000-8000-00805F9B34FB}'
CordlessTelephonyServiceClass_UUID = '{00001109-0000-1000-8000-00805F9B34FB}'
SDP_AudioSourceServiceClass_UUID = '{0000110A-0000-1000-8000-00805F9B34FB}'
SDP_AudioSinkServiceClass_UUID = '{0000110B-0000-1000-8000-00805F9B34FB}'
SDP_AVRemoteControlTargetServiceClass_UUID = '{0000110C-0000-1000-8000-00805F9B34FB}'
SDP_AdvancedAudioDistributionServiceClass_UUID = '{0000110D-0000-1000-8000-00805F9B34FB}'
SDP_AVRemoteControlServiceClass_UUID = '{0000110E-0000-1000-8000-00805F9B34FB}'
VideoConferencingServiceClass_UUID = '{0000110F-0000-1000-8000-00805F9B34FB}'
IntercomServiceClass_UUID = '{00001110-0000-1000-8000-00805F9B34FB}'

#蓝牙传真服务
FaxServiceClass_UUID = '{00001111-0000-1000-8000-00805F9B34FB}'

HeadsetAudioGatewayServiceClass_UUID = '{00001112-0000-1000-8000-00805F9B34FB}'
WAPServiceClass_UUID = '{00001113-0000-1000-8000-00805F9B34FB}'
WAPClientServiceClass_UUID = '{00001114-0000-1000-8000-00805F9B34FB}'

#个人局域网服务
PANUServiceClass_UUID = '{00001115-0000-1000-8000-00805F9B34FB}'

#个人局域网服务
NAPServiceClass_UUID = '{00001116-0000-1000-8000-00805F9B34FB}'

#个人局域网服务
GNServiceClass_UUID = '{00001117-0000-1000-8000-00805F9B34FB}'

DirectPrintingServiceClass_UUID = '{00001118-0000-1000-8000-00805F9B34FB}'
ReferencePrintingServiceClass_UUID = '{00001119-0000-1000-8000-00805F9B34FB}'
ImagingServiceClass_UUID = '{0000111A-0000-1000-8000-00805F9B34FB}'
ImagingResponderServiceClass_UUID = '{0000111B-0000-1000-8000-00805F9B34FB}'
ImagingAutomaticArchiveServiceClass_UUID = '{0000111C-0000-1000-8000-00805F9B34FB}'
ImagingReferenceObjectsServiceClass_UUID = '{0000111D-0000-1000-8000-00805F9B34FB}'
SDP_HandsfreeServiceClass_UUID = '{0000111E-0000-1000-8000-00805F9B34FB}'
HandsfreeAudioGatewayServiceClass_UUID = '{0000111F-0000-1000-8000-00805F9B34FB}'
DirectPrintingReferenceObjectsServiceClass_UUID = '{00001120-0000-1000-8000-00805F9B34FB}'
ReflectedUIServiceClass_UUID = '{00001121-0000-1000-8000-00805F9B34FB}'
BasicPringingServiceClass_UUID = '{00001122-0000-1000-8000-00805F9B34FB}'
PrintingStatusServiceClass_UUID = '{00001123-0000-1000-8000-00805F9B34FB}'

#人机输入服务
HumanInterfaceDeviceServiceClass_UUID = '{00001124-0000-1000-8000-00805F9B34FB}'

HardcopyCableReplacementServiceClass_UUID = '{00001125-0000-1000-8000-00805F9B34FB}'

#蓝牙打印服务
HCRPrintServiceClass_UUID = '{00001126-0000-1000-8000-00805F9B34FB}'

HCRScanServiceClass_UUID = '{00001127-0000-1000-8000-00805F9B34FB}'
CommonISDNAccessServiceClass_UUID = '{00001128-0000-1000-8000-00805F9B34FB}'
VideoConferencingGWServiceClass_UUID = '{00001129-0000-1000-8000-00805F9B34FB}'
UDIMTServiceClass_UUID = '{0000112A-0000-1000-8000-00805F9B34FB}'
UDITAServiceClass_UUID = '{0000112B-0000-1000-8000-00805F9B34FB}'
AudioVideoServiceClass_UUID = '{0000112C-0000-1000-8000-00805F9B34FB}'
SIMAccessServiceClass_UUID = '{0000112D-0000-1000-8000-00805F9B34FB}'
PnPInformationServiceClass_UUID = '{00001200-0000-1000-8000-00805F9B34FB}'
GenericNetworkingServiceClass_UUID = '{00001201-0000-1000-8000-00805F9B34FB}'
GenericFileTransferServiceClass_UUID = '{00001202-0000-1000-8000-00805F9B34FB}'
GenericAudioServiceClass_UUID = '{00001203-0000-1000-8000-00805F9B34FB}'
GenericTelephonyServiceClass_UUID = '{00001204-0000-1000-8000-00805F9B34FB}'

藍芽傳送資料雖然是string 方式
但是組成依舊是由byte

傳送至 藍芽晶片 HC-06後 傳送至單晶片處理
因為單晶片處理速度極快 藍芽Baud rate 9600比較慢
每送入1byte便處理和儲存

實驗結果顯示

一次一次輸入 和一次輸入 可以辨別
原本藍芽終端也使用相似辦法,因此不會產生錯誤。

__________________________2014/8/01___________________________


在使用TableRow時候
如果只使用一個就會造成錯誤
解決辦法為在使用另外一個空的,或是使用兩個以上才不會顯示有錯誤
(debug不出來 還是會通過)

str.length() 算出字串長度
substring(0, str.length()-1) 自動減少字串 只留下 (開始,結束);之間的字元

跳到另外一個頁面直接設定最上層的
   setContentView(R.layout.要設定的地方);
這樣即可


設定按鈕時出現錯誤

首先

當宣告變數他的值的時候,當下必須在此layout

例如
 setContentView(R.layout.main);
  backmain=(Button)findViewById(R.id.backtomain);

 backtomain必須在main這個layout裡面
不然就會發生錯誤跳出,但是debug不出來
在當下layout時才能夠宣告此layout按鈕等元件
然後才能夠使用


 backmain.setOnClickListener(new OnClickListener()
{

@Override
public void onClick(View v) {

}


});
經過宣告後按鈕方程式才可使用。


當使用跳入另外一個視窗時候須注意事項
如果還有需要控制








_______________________2014/8/06_________________________________



使用setContentView(R.layout.xxxx)時候要注意
當使用後之後原本介面裡面的按鈕功能全部刷新
如果要在切換畫面後有按鈕功能
就需要重新宣告+findViewById(R.Id.xxxx)才行
按鈕本身也需要重新監聽

宣告要在 當下視窗才行
如果在其他視窗宣告視窗裡面沒有的元件就會導致直接跳窗
雖然不會有debug出來,但執行時會有問題
因此只要重複監聽兩次,按鈕方程式寫在主程式內當作副程式便會執行

java執行似乎沒有照順序,會自動去抓,另外還會把項目內的元件都先做一遍







__________________2014/8/8 終於解決這個大問題_________________



INT  轉 String 的方法



如何將整數 int 轉換成字串 String ? 

A. 有三種方法: 

1.) String s = String.valueOf(i); 

2.) String s = Integer.toString(i); 

3.) String s = "" + i; 

注: Double, Float, Long 轉成字串的方法大同小異. 









___________________2014/08/09________________________________________


解決按鈕按下和放開的偵測

OnTouchListener、OnClickListener、OnLongClickListener
這三種程式碼 各有所用途

應用程式碼 還在想辦法解決按下不停發送的作業
  1. public OnTouchListener touchListener = new OnTouchListener() {  
  2.           
  3.         @Override  
  4.         public boolean onTouch(View v, MotionEvent event) {  
  5.             //按下  
  6.             if(event.getAction()==MotionEvent.ACTION_DOWN){   按下時觸發
  7.                 Log.i("log","action_down");  
  8.                 return true;  
  9.             }else if(event.getAction()==MotionEvent.ACTION_UP){   放開時觸發
  10.                 Log.i("log","action_up");  
  11.                 return true;  
  12.             }else if(event.getAction()==MotionEvent.ACTION_MOVE){  移動時觸發
  13.                 Log.i("log","action_move");  
  14.                 return true;  
  15.             }  
  16.             return false;  
  17.         }  
  18.     };  



自己的範例

    private Button.OnTouchListener listener1=new Button.OnTouchListener()
    {



@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub

if(event.getAction()!=MotionEvent.ACTION_UP)
//如果不是上升的時候就顯示
 //不知道為什麼用觸發按下卻會無法連續觸發
{  
 a=a+1;
  a1=Integer.toString(a);


  Toast test=Toast.makeText(TestBluetoothChat.this, a1,Toast.LENGTH_SHORT);
test.show();



}

如果彈起來(結束按鈕) 執行此方程式
if(event.getAction()==MotionEvent.ACTION_UP)
{  

a1=Integer.toString(a);
Toast test=Toast.makeText(TestBluetoothChat.this, a1,Toast.LENGTH_LONG);
test.show();
}


return false;
}
   
   
   

    };


__________________________________2014/8/10______________________________



程式上面如果有計算的問題
會導致未知錯誤
如果APP自動跳出來的話,一定是有計算錯誤
可能在運作過程中其他副程式正在運算
運算值裡面如果沒有歸零,或是溢出就會導致崩潰





留言

這個網誌中的熱門文章

[單晶片]-寫I2C通訊(MPU6050為範例)

[研發替代役]-威聯通QNAP面試

[研發替代役]-明緯面試