- 浏览: 160118 次
最新评论
-
bihongliang:
并且服务端一直报错:javax.bluetooth.Bluet ...
android 和 PC端 进行蓝牙通信 demo -
bihongliang:
你好,博主,我是windows10 64 位系统,加载了 64 ...
android 和 PC端 进行蓝牙通信 demo -
白云飘飘2016:
<div class="quote_title ...
android 和 PC端 进行蓝牙通信 demo -
fcylf:
win7 64位,pc端测试,报错:Native Librar ...
android 和 PC端 进行蓝牙通信 demo -
abc天残:
http://www.iteye.com/images/smi ...
android 从服务器下载更新新版本软件 demo
前提:
1. 使用真机测试
2. 测试前请蓝牙配对好手机与PC机蓝牙适配器(所以你需要一个蓝牙适配器插入PC USB口)
demo测试效果:
当手机左右摇摆时将数据传递到PC端,打印出来。(android重力感应)
PC服务端代码:
import java.io.IOException; import java.io.InputStream; import javax.microedition.io.Connector; import javax.microedition.io.StreamConnection; import javax.microedition.io.StreamConnectionNotifier; public class BTServer implements Runnable { // 流连接通知 用于创建流连接 private StreamConnectionNotifier myPCConnNotifier = null; // 流连接 private StreamConnection streamConn = null; // 接受数据字节流 private byte[] acceptedByteArray = new byte[12]; // 读取(输入)流 private InputStream inputStream = null; /** * 主线程 * * @param args */ public static void main(String[] args) { new BTServer(); } /** * 构造方法 */ public BTServer() { try { // 得到流连接通知,下面的UUID必须和手机客户端的UUID相一致。 myPCConnNotifier = (StreamConnectionNotifier) Connector .open("btspp://localhost:0000110100001000800000805F9B34FB"); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } // 打开连接通道并读取流线程 new Thread(this).start(); } @Override public void run() { try { String inSTR = null; // 持续保持着监听客户端的连接请求 while (true) { // 获取流连接 streamConn = myPCConnNotifier.acceptAndOpen(); // 获取流通道 inputStream = streamConn.openInputStream(); // 读取字节流 while (inputStream.read(acceptedByteArray) != -1) { inSTR = new String(acceptedByteArray); System.out.println(inSTR); if (inSTR.contains("EXIT")) { // 手机客户端退出则关闭连接通道。 inputStream.close(); if (streamConn != null) { streamConn.close(); } break; } } } } catch (IOException e) { e.printStackTrace(); } } }
服务端请导入bluecove.jar 和 commons-io.jar包
android手机客户端代码:
BlueTooth.java
package com.royal.bluetooth; import java.io.IOException; import java.io.OutputStream; import java.util.UUID; import android.app.Activity; import android.app.AlertDialog; import android.app.AlertDialog.Builder; import android.bluetooth.BluetoothAdapter; import android.bluetooth.BluetoothDevice; import android.bluetooth.BluetoothSocket; import android.content.DialogInterface; import android.content.Intent; import android.hardware.Sensor; import android.hardware.SensorEvent; import android.hardware.SensorEventListener; import android.hardware.SensorManager; import android.os.Bundle; import android.view.Gravity; import android.view.KeyEvent; import android.view.Window; import android.view.WindowManager; import android.widget.Toast; /** * BlueTooth & Sensor * * @author royal * */ public class BlueTooth extends Activity { private static final int REQUEST_DISCOVERY = 0x1; // 建立蓝牙通信的UUID private static final UUID uuid = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB"); // 自带的蓝牙适配器 private BluetoothAdapter bluetoothAdapter = null; // 扫描得到的蓝牙设备 private BluetoothDevice device = null; // 蓝牙通信socket private BluetoothSocket btSocket = null; // 手机输出流 private OutputStream outStream = null; private byte[] msgBuffer = null; // 传感器管理 private SensorManager sensorMgr = null; // 传感器感应 private Sensor sensor = null; // 手机x、y、z轴方向数据 private int x, y, z; /** * 当这个activity第一次被创建的时候呼叫该方法 **/ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); /* 使程序窗口全屏 */ // 创建一个没有title的全屏主题 this.setTheme(android.R.style.Theme_NoTitleBar_Fullscreen); // 窗口全屏 this.requestWindowFeature(Window.FEATURE_NO_TITLE); // 设置全屏标志 this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); // 按bluetooth.xml文件布局风格 setContentView(R.layout.bluetooth); // Gravity sensing 获取传感器 sensorMgr = (SensorManager) this.getSystemService(SENSOR_SERVICE); sensor = sensorMgr.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); // 获取手机默认上的蓝牙适配器 bluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); // 开启手机蓝牙设备 bluetoothAction(); // 查询附近所有的蓝牙设备并选择连接 connectToDevice(); } /** * 蓝牙开始 查询手机是否支持蓝牙,如果支持的话,进行下一步。 查看蓝牙设备是否已打开,如果否则打开。 */ public void bluetoothAction() { // 查看手机是否有蓝牙设备功能 if (hasAdapter(bluetoothAdapter)) { if (!bluetoothAdapter.isEnabled()) { // 开启蓝牙功能 bluetoothAdapter.enable(); } } else { // 程序终止 this.finish(); } } /** * 查看手机是否有蓝牙设备功能 * * @param ba * 蓝牙设备适配器 * @return boolean */ public boolean hasAdapter(BluetoothAdapter ba) { if (ba != null) { return true; } displayLongToast("该手机没有蓝牙功能!"); return false; } /** * 创建一个长时间弹出的提示窗口toast * * @param str * 提示字符串 */ public void displayLongToast(String str) { Toast toast = Toast.makeText(this, str, Toast.LENGTH_LONG); toast.setGravity(Gravity.TOP, 0, 220); toast.show(); } /** * 创建一个短时间弹出的提示窗口toast * * @param str * 提示字符串 */ public void displayShortToast(String str) { Toast toast = Toast.makeText(this, str, Toast.LENGTH_SHORT); toast.setGravity(Gravity.TOP, 0, 220); toast.show(); } /** * 蓝牙若启动,则查询附近的所有蓝牙设备进行选择连接 */ public void connectToDevice() { if (bluetoothAdapter.isEnabled()) { // 跳到另一个activity---DiscoveryActivity,该类用于查询附近所有的蓝牙设备。 Intent intent = new Intent(this, DiscoveryActivity.class); // 弹出窗口提示 displayLongToast("请选择一个蓝牙设备进行连接!"); // 手机此时跳进DiscoveryActivity程序界面。 // 注意:利用startActivityForResult回调数据返回当前的程序。 // 详细参考:http://snmoney.blog.163.com/blog/static/440058201073025132670/ this.startActivityForResult(intent, REQUEST_DISCOVERY); } else { this.finish(); } } /** * startActivityForResult触发调用DiscoveryActivity后进行处理 * 获取到相应的蓝牙地址数据后,开始我们核心的数据交互 */ @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { // TODO Auto-generated method stub // super.onActivityResult(requestCode, resultCode, data); // 这里确保相互回调时数据的准确传输 if (requestCode != REQUEST_DISCOVERY) { return; } if (resultCode != RESULT_OK) { return; } // 获取到DiscoveryActivity点击项后传过来的蓝牙设备地址 String addressStr = data.getStringExtra("address"); // 根据蓝牙设备地址得到该蓝牙设备对象(这是扫描到的蓝牙设备哦,不是自己的) device = bluetoothAdapter.getRemoteDevice(addressStr); try { //根据UUID创建通信套接字 btSocket = device.createRfcommSocketToServiceRecord(uuid); } catch (Exception e) { displayLongToast("通信通道创建失败!"); } if (btSocket != null) { try { //这一步一定要确保连接上,不然的话程序就卡死在这里了。 btSocket.connect(); displayLongToast("通信通道连接成功!"); } catch (IOException ioe) { displayLongToast("通信通道连接失败!"); try { btSocket.close(); displayLongToast("通信通道已关闭!"); } catch (IOException ioe2) { displayLongToast("通信通道尚未连接,无法关闭!"); } } try { // 获取输出流 outStream = btSocket.getOutputStream(); // 手机发出数据 sendSensorData(); } catch (IOException e) { displayLongToast("数据流创建失败!"); } } } /** * 发送数据 发出从手机通过重力感应器获取到的数据 */ public void sendSensorData() { // 重力感应监听 SensorEventListener lsn = new SensorEventListener() { // 重写内部方法,当精确度发生变化是触发该方法。 @Override public void onAccuracyChanged(Sensor s, int accuracy) { // TODO Auto-generated method stub } // 重写内部方法,当数据发生变化的时候触发该方法。 @Override public void onSensorChanged(SensorEvent se) { // TODO Auto-generated method stub /** * 当手机横向头部朝左屏幕正对自己时 x=10,y=0,z=0; 当手机竖向屏幕正对自己时 x=0,y=10,z=0; * 当手机平放屏幕朝上时 x=0,y=0,z=10; 由此可知:当手握手机且竖向屏幕正对自己时,有: 水平就是X轴 * 垂直就是Y轴 屏幕所对方向便是Z轴 具体可参考简单例子---SensorDemo */ x = (int)se.values[SensorManager.DATA_X]; y = (int)se.values[SensorManager.DATA_Y]; z = (int)se.values[SensorManager.DATA_Z]; if (y > 5 || y < -5) { // String str = String.valueOf(x).concat(String.valueOf(y)).concat(String.valueOf(z)); String str = "x" + String.valueOf(x) + "y" + String.valueOf(y) + "z" + String.valueOf(z) + "/"; msgBuffer = str.getBytes(); try { System.out.println("x=" + x + " y =" + y + " z =" + z); outStream.write(msgBuffer); } catch (IOException e) { displayShortToast("数据发送失败!"); } } // if (y > 5 || y < -5) { // DataModel dataModel=new DataModel(x,y,z); // try { // System.out.println("x=" + x + " y =" + y + " z =" + z); // msgBuffer = dataModel.convertSelfToByteArray(); // System.out.println("--------"+msgBuffer.length); // outStream.write(msgBuffer); // } catch (IOException e) { // Log.e("BlueTooth",e.getMessage()); // e.printStackTrace(); // displayShortToast("数据发送失败!"); // } // } } }; // 别忘了注册重力感应器,由于android的一些东东是又很大一部分都要这么干的。 // 所有要注意。比如蓝牙这块,在对它打开的时候其实你也要注册权限的。看AndroidManifest.xml文件。 sensorMgr .registerListener(lsn, sensor, SensorManager.SENSOR_DELAY_GAME); } // ////////////////////以下是退出程序的一些操作,不关核心功能的事///////////////////////////////// /** * 重写方法:点击返回键,确认是否退出程序。 */ @Override public boolean onKeyDown(int keyCode, KeyEvent event) { // TODO Auto-generated method stub if (keyCode == KeyEvent.KEYCODE_BACK) { Builder alertDialog = new AlertDialog.Builder(this); // 设置弹出框的图标 alertDialog.setIcon(R.drawable.icon); // 设置弹出框的title alertDialog.setTitle(R.string.prompt); // 设置弹出框的提示信息 alertDialog.setMessage(R.string.quit); // 设置弹出框确认键触发事件 alertDialog.setPositiveButton(R.string.confirm, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int whichButton) { // TODO Auto-generated method stub try { outStream.write("QUIT".getBytes()); btSocket.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } finish(); } }); // 设置弹出框取消键触发事件(不做任何操作) alertDialog.setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub } }); // 显示弹出框 alertDialog.show(); return true; } else { // 如果点击的不是返回键按钮,那么该做什么操作就做什么操作。 return super.onKeyDown(keyCode, event); } } /** * 重写方法:销毁线程,退出系统。 */ @Override protected void onDestroy() { // TODO Auto-generated method stub super.onDestroy(); System.exit(0); } }
DiscoveryActivity.java
package com.royal.bluetooth; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Set; import android.app.ListActivity; import android.bluetooth.BluetoothAdapter; import android.bluetooth.BluetoothDevice; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.view.Window; import android.view.WindowManager; import android.widget.ListView; import android.widget.SimpleAdapter; /** * 该类集成ListActivity,主要是扫描并显示出附近所有的蓝牙设备 结果返回给BlueTooth * * @author royal */ public class DiscoveryActivity extends ListActivity { // 获取手机默认上的蓝牙适配器 private BluetoothAdapter blueToothAdapter = BluetoothAdapter .getDefaultAdapter(); // 把每一个HashMap键值对的蓝牙设备信息存放到list数组中并按文件布局风格的方式呈现出来 private ArrayList<HashMap<String, String>> list = null; // 用于真正存放所有扫描到的蓝牙设备的list private List<BluetoothDevice> _devices = new ArrayList<BluetoothDevice>(); @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); /* 使程序窗口全屏 */ // 创建一个没有title的全屏主题 this.setTheme(android.R.style.Theme_NoTitleBar_Fullscreen); // 窗口全屏 this.requestWindowFeature(Window.FEATURE_NO_TITLE); // 设置全屏标志 this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); // 按discovery.xml文件布局风格 setContentView(R.layout.discovery); list = new ArrayList<HashMap<String, String>>(); // 把扫描都的每一个蓝牙设备放到list中,并呈现给客户端 showDevices(); } /** * 把扫描都的每一个蓝牙设备放到list中,并呈现给客户端。 */ public void showDevices() { // 获取所有已配对的蓝牙设备 Set<BluetoothDevice> devices = blueToothAdapter.getBondedDevices(); if (devices.size() > 0) { Iterator<BluetoothDevice> it = devices.iterator(); BluetoothDevice bluetoothDevice = null; HashMap<String, String> map = new HashMap<String, String>(); while (it.hasNext()) { bluetoothDevice = it.next(); // 把每一个获取到的蓝牙设备的名称和地址存放到HashMap数组中,比如:xx:xx:xx:xx:xx: royal map.put("address", bluetoothDevice.getAddress()); map.put("name", bluetoothDevice.getName()); // 该list用于存放呈现的蓝牙设备,存放的是每个设备的map list.add(map); // 该list用于存放的是真正的每一个蓝牙设备对象 _devices.add(bluetoothDevice); } // 构造一个简单的自定义布局风格,各个参数都有明确的相对应。具体给google一下SimpleAdapter和参考一些文献 SimpleAdapter listAdapter = new SimpleAdapter(this, list, R.layout.device, new String[] { "address", "name" }, new int[] { R.id.address, R.id.name }); this.setListAdapter(listAdapter); } } /** * list点击项触发事件 当设备扫描显示完成后,可选择点击相应的设备进行连接。 */ protected void onListItemClick(ListView l, View v, int position, long id) { Intent result = new Intent(); String addressStr = _devices.get(position).getAddress(); //地址只取到17位,虽然addressStr和address都一样 xx:xx:xx:xx:xx:xx String address = addressStr.substring(addressStr.length() - 17); result.putExtra("address", address); // 这个就是回传数据了,将地址传回给BlueTooth---activity // 这里的resultCode是RESULT_OK,BlueTooth---activity方法onActivityResult里对应的resultCode也应该是RESULT_OK //只有resultCode值相匹配,才能确保result数据回调不出错。 setResult(RESULT_OK, result); // 一定要finish,只有finish后才能将数据传给BlueTooth---activity // 并在onActivityResult做处理 finish(); } }
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.royal.bluetooth" android:versionCode="1" android:versionName="1.0"> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".BlueTooth" android:label="@string/app_name" android:screenOrientation="landscape"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".DiscoveryActivity" android:screenOrientation="landscape"> <intent-filter> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.DEFAULT"/> </intent-filter> </activity> </application> <!-- 打开和关闭蓝牙部分的权限 --> <uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/> <uses-permission android:name="android.permission.BLUETOOTH"/> <uses-sdk android:minSdkVersion="7" /> </manifest>
布局:
bluetooth.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:id="@+id/sensor" /> </LinearLayout>
device.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="horizontal" android:paddingBottom="1dip" android:paddingLeft="10dip" android:paddingRight="10dip" android:paddingTop="1dip" > <TextView android:id="@+id/address" android:layout_width="180dip" android:layout_height="30dip" android:singleLine="true" android:textSize="10pt" /> <TextView android:id="@+id/name" android:layout_width="fill_parent" android:layout_height="fill_parent" android:gravity="right" android:textSize="10pt" /> </LinearLayout>
discovery.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <LinearLayout android:id="@+id/listLinearLayout" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="vertical"> <ListView android:id="@id/android:list" android:layout_width="fill_parent" android:layout_height="wrap_content" android:drawSelectorOnTop="false" android:scrollbars="vertical"/> </LinearLayout> </LinearLayout>
- btServer.rar (3.4 KB)
- 下载次数: 393
- bt.rar (86.8 KB)
- 下载次数: 402
- bluecove-2.0.3.jar (480.1 KB)
- 下载次数: 439
- commons-io-2.0.1.jar (155.8 KB)
- 下载次数: 378
评论
22 楼
bihongliang
2016-09-23
并且服务端一直报错:
javax.bluetooth.BluetoothStateException: BluetoothStack not detected
at com.intel.bluetooth.BlueCoveImpl.detectStack(BlueCoveImpl.java:496)
at com.intel.bluetooth.BlueCoveImpl.access$500(BlueCoveImpl.java:69)
at com.intel.bluetooth.BlueCoveImpl$1.run(BlueCoveImpl.java:1044)
at java.security.AccessController.doPrivileged(Native Method)
at com.intel.bluetooth.BlueCoveImpl.detectStackPrivileged(BlueCoveImpl.java:1042)
at com.intel.bluetooth.BlueCoveImpl.getBluetoothStack(BlueCoveImpl.java:1035)
at com.intel.bluetooth.MicroeditionConnector.openImpl(MicroeditionConnector.java:196)
at com.intel.bluetooth.MicroeditionConnector.open(MicroeditionConnector.java:162)
at javax.microedition.io.Connector.open(Connector.java:83)
at BTServer.<init>(BTServer.java:24)
at BTServer.main(BTServer.java:17)
Exception in thread "Thread-0" java.lang.NullPointerException
at BTServer.run(BTServer.java:37)
at java.lang.Thread.run(Thread.java:745)
javax.bluetooth.BluetoothStateException: BluetoothStack not detected
at com.intel.bluetooth.BlueCoveImpl.detectStack(BlueCoveImpl.java:496)
at com.intel.bluetooth.BlueCoveImpl.access$500(BlueCoveImpl.java:69)
at com.intel.bluetooth.BlueCoveImpl$1.run(BlueCoveImpl.java:1044)
at java.security.AccessController.doPrivileged(Native Method)
at com.intel.bluetooth.BlueCoveImpl.detectStackPrivileged(BlueCoveImpl.java:1042)
at com.intel.bluetooth.BlueCoveImpl.getBluetoothStack(BlueCoveImpl.java:1035)
at com.intel.bluetooth.MicroeditionConnector.openImpl(MicroeditionConnector.java:196)
at com.intel.bluetooth.MicroeditionConnector.open(MicroeditionConnector.java:162)
at javax.microedition.io.Connector.open(Connector.java:83)
at BTServer.<init>(BTServer.java:24)
at BTServer.main(BTServer.java:17)
Exception in thread "Thread-0" java.lang.NullPointerException
at BTServer.run(BTServer.java:37)
at java.lang.Thread.run(Thread.java:745)
21 楼
bihongliang
2016-09-23
你好,博主,我是windows10 64 位系统,加载了 64位的 bluecove-2.1.1-SNAPSHOT.jar包,但是还是配对不成功,是什么原因呢?
20 楼
白云飘飘2016
2016-07-25
fcylf 写道
win7 64位,pc端测试,
报错:
Native Library intelbth_x64 not available
Native Library bluecove_x64 not available
javax.bluetooth.BluetoothStateException: BlueCove libraries not available
这个是什么原因 ? 谢谢!
报错:
Native Library intelbth_x64 not available
Native Library bluecove_x64 not available
javax.bluetooth.BluetoothStateException: BlueCove libraries not available
这个是什么原因 ? 谢谢!
你用的是64位的java环境,这个包是32位的,去google一下64位的bluecove就行了
19 楼
fcylf
2016-06-21
win7 64位,pc端测试,
报错:
Native Library intelbth_x64 not available
Native Library bluecove_x64 not available
javax.bluetooth.BluetoothStateException: BlueCove libraries not available
这个是什么原因 ? 谢谢!
报错:
Native Library intelbth_x64 not available
Native Library bluecove_x64 not available
javax.bluetooth.BluetoothStateException: BlueCove libraries not available
这个是什么原因 ? 谢谢!
18 楼
萧_瑟
2013-12-31
青青的水 写道
已经使用window7 64加android 4.01实现了,但是连接不稳定。 想问问博主。
没事的,知道了流程,有源码,用现有版本在此基础上去优化就好了。
17 楼
青青的水
2013-12-31
已经使用window7 64加android 4.01实现了,但是连接不稳定。 想问问博主。
16 楼
萧_瑟
2013-12-27
青青的水 写道
想问下博主实现的平台,我用window7 64加android 4.01显示通信通道建立失败
win7 32bit + android 2.3
15 楼
青青的水
2013-12-23
想问下博主实现的平台,我用window7 64加android 4.01显示通信通道建立失败
14 楼
萧_瑟
2013-11-21
firefight 写道
博主你好:我在Android 4.3(GOOGLE NEXUS)下运行bt例程,发现屏幕不停在Bluetooth和Discovery两个界面之间切换,而且日志中报VM退出,
11-18 15:50:09.873: D/libEGL(25790): loaded /vendor/lib/egl/libEGL_POWERVR_SGX540_120.so
11-18 15:50:09.873: D/libEGL(25790): loaded /vendor/lib/egl/libGLESv1_CM_POWERVR_SGX540_120.so
11-18 15:50:09.881: D/libEGL(25790): loaded /vendor/lib/egl/libGLESv2_POWERVR_SGX540_120.so
11-18 15:50:09.959: D/OpenGLRenderer(25790): Enabling debug mode 0
11-18 15:50:10.389: I/AndroidRuntime(25790): VM exiting with result code 0, cleanup skipped.
11-18 15:50:10.623: D/libEGL(25806): loaded /vendor/lib/egl/libEGL_POWERVR_SGX540_120.so
11-18 15:50:10.631: D/libEGL(25806): loaded /vendor/lib/egl/libGLESv1_CM_POWERVR_SGX540_120.so
11-18 15:50:10.639: D/libEGL(25806): loaded /vendor/lib/egl/libGLESv2_POWERVR_SGX540_120.so
11-18 15:50:10.740: D/OpenGLRenderer(25806): Enabling debug mode 0
11-18 15:50:12.014: D/libEGL(25822): loaded /vendor/lib/egl/libEGL_POWERVR_SGX540_120.so
11-18 15:50:12.021: D/libEGL(25822): loaded /vendor/lib/egl/libGLESv1_CM_POWERVR_SGX540_120.so
11-18 15:50:12.029: D/libEGL(25822): loaded /vendor/lib/egl/libGLESv2_POWERVR_SGX540_120.so
11-18 15:50:12.154: D/OpenGLRenderer(25822): Enabling debug mode 0
11-18 15:50:12.545: I/AndroidRuntime(25822): VM exiting with result code 0, cleanup skipped.
11-18 15:50:12.787: D/libEGL(25838): loaded /vendor/lib/egl/libEGL_POWERVR_SGX540_120.so
11-18 15:50:12.795: D/libEGL(25838): loaded /vendor/lib/egl/libGLESv1_CM_POWERVR_SGX540_120.so
11-18 15:50:12.803: D/libEGL(25838): loaded /vendor/lib/egl/libGLESv2_POWERVR_SGX540_120.so
11-18 15:50:12.904: D/OpenGLRenderer(25838): Enabling debug mode 0
11-18 15:50:13.365: I/AndroidRuntime(25838): VM exiting with result code 0, cleanup skipped.
11-18 15:50:14.201: D/libEGL(25853): loaded /vendor/lib/egl/libEGL_POWERVR_SGX540_120.so
11-18 15:50:14.209: D/libEGL(25853): loaded /vendor/lib/egl/libGLESv1_CM_POWERVR_SGX540_120.so
11-18 15:50:14.217: D/libEGL(25853): loaded /vendor/lib/egl/libGLESv2_POWERVR_SGX540_120.so
11-18 15:50:14.326: D/OpenGLRenderer(25853): Enabling debug mode 0
11-18 15:50:14.701: I/AndroidRuntime(25853): VM exiting with result code 0, cleanup skipped.
能帮忙指点一下吗?是不是新版本的Android要做什么修改吗?
11-18 15:50:09.873: D/libEGL(25790): loaded /vendor/lib/egl/libEGL_POWERVR_SGX540_120.so
11-18 15:50:09.873: D/libEGL(25790): loaded /vendor/lib/egl/libGLESv1_CM_POWERVR_SGX540_120.so
11-18 15:50:09.881: D/libEGL(25790): loaded /vendor/lib/egl/libGLESv2_POWERVR_SGX540_120.so
11-18 15:50:09.959: D/OpenGLRenderer(25790): Enabling debug mode 0
11-18 15:50:10.389: I/AndroidRuntime(25790): VM exiting with result code 0, cleanup skipped.
11-18 15:50:10.623: D/libEGL(25806): loaded /vendor/lib/egl/libEGL_POWERVR_SGX540_120.so
11-18 15:50:10.631: D/libEGL(25806): loaded /vendor/lib/egl/libGLESv1_CM_POWERVR_SGX540_120.so
11-18 15:50:10.639: D/libEGL(25806): loaded /vendor/lib/egl/libGLESv2_POWERVR_SGX540_120.so
11-18 15:50:10.740: D/OpenGLRenderer(25806): Enabling debug mode 0
11-18 15:50:12.014: D/libEGL(25822): loaded /vendor/lib/egl/libEGL_POWERVR_SGX540_120.so
11-18 15:50:12.021: D/libEGL(25822): loaded /vendor/lib/egl/libGLESv1_CM_POWERVR_SGX540_120.so
11-18 15:50:12.029: D/libEGL(25822): loaded /vendor/lib/egl/libGLESv2_POWERVR_SGX540_120.so
11-18 15:50:12.154: D/OpenGLRenderer(25822): Enabling debug mode 0
11-18 15:50:12.545: I/AndroidRuntime(25822): VM exiting with result code 0, cleanup skipped.
11-18 15:50:12.787: D/libEGL(25838): loaded /vendor/lib/egl/libEGL_POWERVR_SGX540_120.so
11-18 15:50:12.795: D/libEGL(25838): loaded /vendor/lib/egl/libGLESv1_CM_POWERVR_SGX540_120.so
11-18 15:50:12.803: D/libEGL(25838): loaded /vendor/lib/egl/libGLESv2_POWERVR_SGX540_120.so
11-18 15:50:12.904: D/OpenGLRenderer(25838): Enabling debug mode 0
11-18 15:50:13.365: I/AndroidRuntime(25838): VM exiting with result code 0, cleanup skipped.
11-18 15:50:14.201: D/libEGL(25853): loaded /vendor/lib/egl/libEGL_POWERVR_SGX540_120.so
11-18 15:50:14.209: D/libEGL(25853): loaded /vendor/lib/egl/libGLESv1_CM_POWERVR_SGX540_120.so
11-18 15:50:14.217: D/libEGL(25853): loaded /vendor/lib/egl/libGLESv2_POWERVR_SGX540_120.so
11-18 15:50:14.326: D/OpenGLRenderer(25853): Enabling debug mode 0
11-18 15:50:14.701: I/AndroidRuntime(25853): VM exiting with result code 0, cleanup skipped.
能帮忙指点一下吗?是不是新版本的Android要做什么修改吗?
新版的UI和逻辑业务做了分离处理,可能会有影响,具体我也没时间去测试,你先用旧版本试试,再结合源码看看新版本影响的问题,顺便告诉我哈
13 楼
firefight
2013-11-18
博主你好:我在Android 4.3(GOOGLE NEXUS)下运行bt例程,发现屏幕不停在Bluetooth和Discovery两个界面之间切换,而且日志中报VM退出,
11-18 15:50:09.873: D/libEGL(25790): loaded /vendor/lib/egl/libEGL_POWERVR_SGX540_120.so
11-18 15:50:09.873: D/libEGL(25790): loaded /vendor/lib/egl/libGLESv1_CM_POWERVR_SGX540_120.so
11-18 15:50:09.881: D/libEGL(25790): loaded /vendor/lib/egl/libGLESv2_POWERVR_SGX540_120.so
11-18 15:50:09.959: D/OpenGLRenderer(25790): Enabling debug mode 0
11-18 15:50:10.389: I/AndroidRuntime(25790): VM exiting with result code 0, cleanup skipped.
11-18 15:50:10.623: D/libEGL(25806): loaded /vendor/lib/egl/libEGL_POWERVR_SGX540_120.so
11-18 15:50:10.631: D/libEGL(25806): loaded /vendor/lib/egl/libGLESv1_CM_POWERVR_SGX540_120.so
11-18 15:50:10.639: D/libEGL(25806): loaded /vendor/lib/egl/libGLESv2_POWERVR_SGX540_120.so
11-18 15:50:10.740: D/OpenGLRenderer(25806): Enabling debug mode 0
11-18 15:50:12.014: D/libEGL(25822): loaded /vendor/lib/egl/libEGL_POWERVR_SGX540_120.so
11-18 15:50:12.021: D/libEGL(25822): loaded /vendor/lib/egl/libGLESv1_CM_POWERVR_SGX540_120.so
11-18 15:50:12.029: D/libEGL(25822): loaded /vendor/lib/egl/libGLESv2_POWERVR_SGX540_120.so
11-18 15:50:12.154: D/OpenGLRenderer(25822): Enabling debug mode 0
11-18 15:50:12.545: I/AndroidRuntime(25822): VM exiting with result code 0, cleanup skipped.
11-18 15:50:12.787: D/libEGL(25838): loaded /vendor/lib/egl/libEGL_POWERVR_SGX540_120.so
11-18 15:50:12.795: D/libEGL(25838): loaded /vendor/lib/egl/libGLESv1_CM_POWERVR_SGX540_120.so
11-18 15:50:12.803: D/libEGL(25838): loaded /vendor/lib/egl/libGLESv2_POWERVR_SGX540_120.so
11-18 15:50:12.904: D/OpenGLRenderer(25838): Enabling debug mode 0
11-18 15:50:13.365: I/AndroidRuntime(25838): VM exiting with result code 0, cleanup skipped.
11-18 15:50:14.201: D/libEGL(25853): loaded /vendor/lib/egl/libEGL_POWERVR_SGX540_120.so
11-18 15:50:14.209: D/libEGL(25853): loaded /vendor/lib/egl/libGLESv1_CM_POWERVR_SGX540_120.so
11-18 15:50:14.217: D/libEGL(25853): loaded /vendor/lib/egl/libGLESv2_POWERVR_SGX540_120.so
11-18 15:50:14.326: D/OpenGLRenderer(25853): Enabling debug mode 0
11-18 15:50:14.701: I/AndroidRuntime(25853): VM exiting with result code 0, cleanup skipped.
能帮忙指点一下吗?是不是新版本的Android要做什么修改吗?
11-18 15:50:09.873: D/libEGL(25790): loaded /vendor/lib/egl/libEGL_POWERVR_SGX540_120.so
11-18 15:50:09.873: D/libEGL(25790): loaded /vendor/lib/egl/libGLESv1_CM_POWERVR_SGX540_120.so
11-18 15:50:09.881: D/libEGL(25790): loaded /vendor/lib/egl/libGLESv2_POWERVR_SGX540_120.so
11-18 15:50:09.959: D/OpenGLRenderer(25790): Enabling debug mode 0
11-18 15:50:10.389: I/AndroidRuntime(25790): VM exiting with result code 0, cleanup skipped.
11-18 15:50:10.623: D/libEGL(25806): loaded /vendor/lib/egl/libEGL_POWERVR_SGX540_120.so
11-18 15:50:10.631: D/libEGL(25806): loaded /vendor/lib/egl/libGLESv1_CM_POWERVR_SGX540_120.so
11-18 15:50:10.639: D/libEGL(25806): loaded /vendor/lib/egl/libGLESv2_POWERVR_SGX540_120.so
11-18 15:50:10.740: D/OpenGLRenderer(25806): Enabling debug mode 0
11-18 15:50:12.014: D/libEGL(25822): loaded /vendor/lib/egl/libEGL_POWERVR_SGX540_120.so
11-18 15:50:12.021: D/libEGL(25822): loaded /vendor/lib/egl/libGLESv1_CM_POWERVR_SGX540_120.so
11-18 15:50:12.029: D/libEGL(25822): loaded /vendor/lib/egl/libGLESv2_POWERVR_SGX540_120.so
11-18 15:50:12.154: D/OpenGLRenderer(25822): Enabling debug mode 0
11-18 15:50:12.545: I/AndroidRuntime(25822): VM exiting with result code 0, cleanup skipped.
11-18 15:50:12.787: D/libEGL(25838): loaded /vendor/lib/egl/libEGL_POWERVR_SGX540_120.so
11-18 15:50:12.795: D/libEGL(25838): loaded /vendor/lib/egl/libGLESv1_CM_POWERVR_SGX540_120.so
11-18 15:50:12.803: D/libEGL(25838): loaded /vendor/lib/egl/libGLESv2_POWERVR_SGX540_120.so
11-18 15:50:12.904: D/OpenGLRenderer(25838): Enabling debug mode 0
11-18 15:50:13.365: I/AndroidRuntime(25838): VM exiting with result code 0, cleanup skipped.
11-18 15:50:14.201: D/libEGL(25853): loaded /vendor/lib/egl/libEGL_POWERVR_SGX540_120.so
11-18 15:50:14.209: D/libEGL(25853): loaded /vendor/lib/egl/libGLESv1_CM_POWERVR_SGX540_120.so
11-18 15:50:14.217: D/libEGL(25853): loaded /vendor/lib/egl/libGLESv2_POWERVR_SGX540_120.so
11-18 15:50:14.326: D/OpenGLRenderer(25853): Enabling debug mode 0
11-18 15:50:14.701: I/AndroidRuntime(25853): VM exiting with result code 0, cleanup skipped.
能帮忙指点一下吗?是不是新版本的Android要做什么修改吗?
12 楼
萧_瑟
2013-05-27
li_717693247_guo6 写道
你好,我用你的这个根本就不能用啊,服务端 收不到数据
请问有报什么异常吗?
11 楼
li_717693247_guo6
2013-05-21
你好,我用你的这个根本就不能用啊,服务端 收不到数据
10 楼
萧_瑟
2013-04-15
tangximing123 写道
你好 我跑了您写的这个代码,并成功实现了数据传输,但是后来不知怎么了一直显示"通信通道连接失败!"。这是什么原因啊?
有什么错误信息吗?这样说我也不怎么好判断。
9 楼
tangximing123
2013-04-10
你好 我跑了您写的这个代码,并成功实现了数据传输,但是后来不知怎么了一直显示"通信通道连接失败!"。这是什么原因啊?
8 楼
萧_瑟
2013-03-11
ixfire 写道
你好 btServer 的bin怎么是class 如何运行 我用代码出错
Exception in thread "main" java.lang.NoClassDefFoundError: javax/microedition/io/Connector
at BlueServer_class.<init>(BlueServer_class.java:36)
at BlueServer_class.main(BlueServer_class.java:26)
Caused by: java.lang.ClassNotFoundException: javax.microedition.io.Connector
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadCla
Exception in thread "main" java.lang.NoClassDefFoundError: javax/microedition/io/Connector
at BlueServer_class.<init>(BlueServer_class.java:36)
at BlueServer_class.main(BlueServer_class.java:26)
Caused by: java.lang.ClassNotFoundException: javax.microedition.io.Connector
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadCla
bin下面是class很正常吧? src下面的才是源码。对于错误问题应该也还是包没引进的关系。请您再认真核对。
7 楼
ixfire
2013-03-09
你好 btServer 的bin怎么是class 如何运行 我用代码出错
Exception in thread "main" java.lang.NoClassDefFoundError: javax/microedition/io/Connector
at BlueServer_class.<init>(BlueServer_class.java:36)
at BlueServer_class.main(BlueServer_class.java:26)
Caused by: java.lang.ClassNotFoundException: javax.microedition.io.Connector
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadCla
Exception in thread "main" java.lang.NoClassDefFoundError: javax/microedition/io/Connector
at BlueServer_class.<init>(BlueServer_class.java:36)
at BlueServer_class.main(BlueServer_class.java:26)
Caused by: java.lang.ClassNotFoundException: javax.microedition.io.Connector
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadCla
6 楼
萧_瑟
2012-11-12
shiruiyzq 写道
为什么服务端不能响应客户端啊?手机端都已经显示通信通道连接成功了,可是PC端还是卡在 streamConn = myPCConnNotifier.acceptAndOpen();不会动,实在不知道是哪里有问题?能帮我解决一下吗?
有报什么异常吗?我也好久没玩了,有点陌生了。你再调调,网上查查。
5 楼
shiruiyzq
2012-11-10
为什么服务端不能响应客户端啊?手机端都已经显示通信通道连接成功了,可是PC端还是卡在 streamConn = myPCConnNotifier.acceptAndOpen();不会动,实在不知道是哪里有问题?能帮我解决一下吗?
4 楼
hell001
2012-06-21
很好,,谢谢!!找了很久
3 楼
猫猫
2012-04-12
萧_瑟 写道
猫猫 写道
您好,打扰了。
我用您的代码,把PC和ANDROID终端蓝牙配对连接后,PC端提示
java.io.IOException: Can't create Service [General fail]
at com.intel.bluetooth.BluetoothStackBlueSoleil.rfServerOpenImpl(Native Method)
at com.intel.bluetooth.BluetoothStackBlueSoleil.rfServerOpen(BluetoothStackBlueSoleil.java:367)
at com.intel.bluetooth.BluetoothRFCommConnectionNotifier.<init>(BluetoothRFCommConnectionNotifier.java:39)
at com.intel.bluetooth.MicroeditionConnector.openImpl(MicroeditionConnector.java:383)
能指导下是什么问题吗?
我用您的代码,把PC和ANDROID终端蓝牙配对连接后,PC端提示
java.io.IOException: Can't create Service [General fail]
at com.intel.bluetooth.BluetoothStackBlueSoleil.rfServerOpenImpl(Native Method)
at com.intel.bluetooth.BluetoothStackBlueSoleil.rfServerOpen(BluetoothStackBlueSoleil.java:367)
at com.intel.bluetooth.BluetoothRFCommConnectionNotifier.<init>(BluetoothRFCommConnectionNotifier.java:39)
at com.intel.bluetooth.MicroeditionConnector.openImpl(MicroeditionConnector.java:383)
能指导下是什么问题吗?
----------------------------------------------
确定导入了bluecove和commons-io包了吗?
果然是包的问题,导入后可以用了,谢谢~
发表评论
-
基于ZBar条形码、二维码扫描Demo
2015-07-29 15:08 2030Demo样式: -
左滑删除Demo
2015-07-29 14:48 714参考摘录:http://blog.csdn.net ... -
Fragment + ViewPager 底部菜单 demo
2015-07-17 17:33 630如附件 -
android googleMap key 的申请
2012-06-28 17:25 1195关于应用于android上 ... -
android phoneGap 静态页面中简单的数据传递
2012-06-27 17:14 2484最终效果: 主要采用方式: wi ... -
android PhoneGap JQuery Mobile Demo
2012-06-26 13:49 2948最终效果: 项目目录结构 ... -
android PhoneGap 自定义插件
2012-06-08 17:16 2255以"发送短信"功能 自定义插件 ... -
android PhoneGap 入门
2012-06-08 09:57 962最终效果: 项目结构图: 需要用到Ph ... -
android 从服务器下载更新新版本软件 demo
2012-06-05 14:23 7695下面介绍的是apk如何进行版本的检测及下载更新! 最终 ... -
android Animation图片渐变动画 Demo
2012-05-11 15:47 3554最终实现效果: 项目目录结构: main.x ... -
android Preference Demo
2012-05-11 09:05 2098最终实现效果 ... -
android 可编辑的下拉框 Demo
2012-04-27 10:34 4240最终实现效果: 项目目录结构: EditDropdownT ... -
Android解析json数组对象
2012-04-13 16:07 5363android有自带的JSON解析 ... -
Android使用KSOAP2调用WebService出现java.lang.NoClassDefFoundError.的解决办法
2012-04-13 14:51 13211.把项目bin目录下的原先生成的apk先删除 2.最 ... -
基于CXF的webService本地数据交互----PC端与Android端(三)
2012-03-31 09:49 2429本篇基于(二)的基础上续写 主要是JSON的数据交 ... -
android所见即所得界面设计工具---droiddraw
2012-03-08 16:06 1491android所见即所得界面设计工具---droiddraw ... -
基于CXF的webService本地数据交互----PC端与Android端(一)
2012-02-27 17:02 37691.下载CXF(我下载的是2.4.6) http://cxf ... -
蓝牙移动体感
2012-02-24 09:36 1037那些年,那些你不知道也不需要知道的事。 -
android menu自定义菜单 Demo
2012-02-24 09:36 1856package com.ruibin.menu; imp ... -
andoid点击按钮(ImageButton)时改变按钮的背景图片 SelectorDemo
2012-02-24 09:36 5251主要是用到selector这个属性! 1. a ...
相关推荐
在"基于蓝牙的PC与Android端通讯DEMO"中,我们关注的是如何构建一个跨平台的蓝牙通信系统,使得个人计算机(PC)能够与Android设备相互通信。下面将详细介绍这个过程涉及的关键知识点。 首先,PC端作为服务端,使用...
4. **Java在蓝牙通信中的应用**:Java的`android.bluetooth`包提供了处理蓝牙连接和数据传输的类和接口,如`BluetoothAdapter`用于管理蓝牙设备,`BluetoothServerSocket`和`BluetoothSocket`分别用于创建服务器端和...
《手机与PC蓝牙通信程序Demo解析》 在现代科技领域,设备间的无线通信技术发展迅速,其中蓝牙技术作为短距离无线通信的一种,被广泛应用在手机、个人计算机(PC)等设备间的数据传输。本篇文章将深入探讨一个由个人...
提供的压缩包文件中,"Android与PC蓝牙交互Android代码.zip"包含了Android应用的源代码,而"Android与PC蓝牙交互PC代码.zip"则包含PC端的实现。通过分析这些源代码,你可以深入理解蓝牙通信的细节,并在此基础上扩展...
基于Bluez实现了蓝牙串口通信,用来与手机端,pc端传输数据。蓝牙模块服务多种多样,这个小demo实现了linux下建立蓝牙服务端的demo,并带了一个客户端测试。 使用时,可通过两台设备,分别作为服务端可客户端,连接...
在提供的"Android Socket demo"压缩包中,可能包含了一个简单的Android Socket通信示例项目,包括客户端和服务器端的代码实现,你可以通过学习和运行这个示例来加深对Android Socket编程的理解。记得在实际部署时,...
"手机端安卓原码"指的是针对Android平台的源代码,用于与NRF52832进行通信。这通常涉及到Android应用开发,使用Java或Kotlin语言编写,可能包含BLE库,如Android BluetoothGatt API,用于连接、读取、写入和订阅NRF...
在IT行业中,蓝牙技术是一种...总之,经典蓝牙和BLE蓝牙的客户端和服务端开发涵盖了网络通信、设备发现、数据传输等多个方面,开发者需要深入理解蓝牙协议栈和Android蓝牙API,才能有效地构建稳定、高效的蓝牙应用。
Android应用源码安卓与PC的Socket通信项目C#版+Java版.rar Android应用源码安卓与PC的Socket通信项目java版.rar Android系统访问串口设备源码.rar android蓝牙连接打印机.rar samsung android 蓝牙4.0开发工具包和...
热敏打印机SDK是一种软件开发工具包,专门为开发者设计,用于集成到各种平台的应用程序中,以便与热敏打印机进行通信并实现打印功能。这个SDK包含了必要的库、接口、示例代码和文档,使得开发者能够轻松地在PC、...
在提供的文件中,"T1_Discover_Demo"和"T1_Discover_Demo_server"可能是两个相关的示例应用,一个是客户端(设备发现者),另一个是服务器端(被发现设备)。这两个应用可能包含了实现UDP发现的具体代码和逻辑。例如...
设备之间通过蓝牙传输进行通信。 贡献者 项目领导 前端工程师 后端工程师 前端工程师 测试仪 吉拉 文献资料 设计文件 测试场景 数据库架构 图表文件 莫斯科 技术 Android Studio(Android仿真器) Arduino...