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
這三種程式碼 各有所用途
應用程式碼 還在想辦法解決按下不停發送的作業
- public OnTouchListener touchListener = new OnTouchListener() {
- @Override
- public boolean onTouch(View v, MotionEvent event) {
- //按下
- if(event.getAction()==MotionEvent.ACTION_DOWN){ 按下時觸發
- Log.i("log","action_down");
- return true;
- }else if(event.getAction()==MotionEvent.ACTION_UP){ 放開時觸發
- Log.i("log","action_up");
- return true;
- }else if(event.getAction()==MotionEvent.ACTION_MOVE){ 移動時觸發
- Log.i("log","action_move");
- return true;
- }
- return false;
- }
- };
自己的範例
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自動跳出來的話,一定是有計算錯誤
可能在運作過程中其他副程式正在運算
運算值裡面如果沒有歸零,或是溢出就會導致崩潰
留言
張貼留言