您好,android蓝牙这方面还是很好搞的,因为大家的方式都是差不多的。先说说如何开启蓝牙设备和设置可见时间:
private void search() {
BluetoothAdapter adapter = BluetoothAdaptergetDefaultAdapter();
if (!adapterisEnabled()) {
adapterenable();
}
Intent enable = new Intent(BluetoothAdapterACTION_REQUEST_DISCOVERABLE);
enableputExtra(BluetoothAdapterEXTRA_DISCOVERABLE_DURATION, 3600); //3600为蓝牙设备可见时间
startActivity(enable);
Intent searchIntent = new Intent(this, ComminuteActivityclass);
startActivity(searchIntent);
}
首先,需要获得一个BluetoothAdapter,可以通过getDefaultAdapter()获得系统默认的蓝牙适配器,当然我们也可以自己指定,但这个真心没有必要,至少我是不需要的。然后我们检查手机的蓝牙是否打开,如果没有,通过enable()方法打开。接着我们再设置手机蓝牙设备的可见,可见时间可以自定义。
完成这些必要的设置后,我们就可以正式开始与蓝牙模块进行通信了:
public class ComminuteActivity extends Activity {
private BluetoothReceiver receiver;
private BluetoothAdapter bluetoothAdapter;
private List<String> devices;
private List<BluetoothDevice> deviceList;
private Bluetooth client;
private final String lockName = "BOLUTEK";
private String message = "000001";
private ListView listView;
@Override
public void onCreate(Bundle savedInstanceState) {
superonCreate(savedInstanceState);
setContentView(Rlayoutsearch_layout);
listView = (ListView) thisfindViewById(Ridlist);
deviceList = new ArrayList<BluetoothDevice>();
devices = new ArrayList<String>();
bluetoothAdapter = BluetoothAdaptergetDefaultAdapter();
bluetoothAdapterstartDiscovery();
IntentFilter filter = new IntentFilter(BluetoothDeviceACTION_FOUND);
receiver = new BluetoothReceiver();
registerReceiver(receiver, filter);
listViewsetOnItemClickListener(new AdapterViewOnItemClickListener() {
@Override
public void onItemClick(AdapterView<> parent, View view, int position, long id) {
setContentView(Rlayoutconnect_layout);
BluetoothDevice device = deviceListget(position);
client = new Bluetooth(device, handler);
try {
clientconnect(message);
} catch (Exception e) {
Loge("TAG", etoString());
}
}
});
}
@Override
protected void onDestroy() {
unregisterReceiver(receiver);
superonDestroy();
}
private final Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
switch (msgwhat) {
case BluetoothCONNECT_FAILED:
ToastmakeText(ComminuteActivitythis, "连接失败", ToastLENGTH_LONG)show();
try {
clientconnect(message);
} catch (Exception e) {
Loge("TAG", etoString());
}
break;
case BluetoothCONNECT_SUCCESS:
ToastmakeText(ComminuteActivitythis, "连接成功", ToastLENGTH_LONG)show();
break;
case BluetoothREAD_FAILED:
ToastmakeText(ComminuteActivitythis, "读取失败", ToastLENGTH_LONG)show();
break;
case BluetoothWRITE_FAILED:
ToastmakeText(ComminuteActivitythis, "写入失败", ToastLENGTH_LONG)show();
break;
case BluetoothDATA:
ToastmakeText(ComminuteActivitythis, msgarg1 + "", ToastLENGTH_LONG)show();
break;
}
}
};
private class BluetoothReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
String action = intentgetAction();
if (BluetoothDeviceACTION_FOUNDequals(action)) {
BluetoothDevice device = intentgetParcelableExtra(BluetoothDeviceEXTRA_DEVICE);
if (isLock(device)) {
devicesadd(devicegetName());
}
deviceListadd(device);
}
showDevices();
}
}
private boolean isLock(BluetoothDevice device) {
boolean isLockName = (devicegetName())equals(lockName);
boolean isSingleDevice = devicesindexOf(devicegetName()) == -1;
return isLockName && isSingleDevice;
}
private void showDevices() {
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, androidRlayoutsimple_list_item_1,
devices);
listViewsetAdapter(adapter);
}
}
SystemUri uri = new Uri("obex://" + sbddSelectedDeviceDeviceAddressToString() + "/" + SystemIOPathGetFileName(ofdFileToBeamFileName));
你的URI对不。
>
关于串口设备,最好联系厂家询问是否提供API接口。关于API接口一般是一个可供调用的DLL文件。如果有可以直接在C#中引用,作为类库来 *** 作设备。具体调用方式需要询问厂家或参阅api的文档说明。不提供软件接口的设备是无法进行开发的。我大概搜了下这个设备,设备是提供配套软件的,那么这款设备是有相关通讯接口类库的,也就是可以用C#进行开发。如果找不到API文档,请尝试用串口调试工具,跟踪配套软件的每一步 *** 作,获取串口通讯报文,用C#模拟 *** 作报文自己封装通讯类后进行开发。
你是用的蓝牙20,还是40 BLE?不管是这两者中哪一个,android SDK都有相关sample可以学习使用,从搜索设备,建立连接,到两端的通信都有,基本覆盖我们要使用的所有功能。
20的sample是:BluetoothChat,网上对它的相关讲解很多,你可以参考blogcsdnnet/homebei2/article/details/6078007;
40的sample是:BluetoothLeGatt,因为google在android43才支持BLE的api,相对来说比较新,用的话主要是理解一些新的协议栈概念,不是很难,网上资料相对来说少些,你也可以找找看
如果你要自己写的话,其实也是上面sample里那些基本功能的重新组合,可以参考:blogcsdnnet/eric41050808/article/details/16967189
计算机端配一个蓝牙适配器 十几块人民币吧
单片机端配一个蓝牙串口模块 ,二十几块 淘宝上找找
对于计算机和单片机,都是串口通信的接口,完全无需其他的程序
(唯一要注意的是,市面上的蓝牙模块,基本上都只支持一对一的模式,因此蓝牙模块没有9位数据的模式)
所以这个你会的,^_^
以上就是关于android蓝牙开发,PC端模拟串口接收字符,该如何编程全部的内容,包括:android蓝牙开发,PC端模拟串口接收字符,该如何编程、C# 蓝牙编程 错误、C#调用蓝牙编程,该怎么解决等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)