Bluetooth App startet nicht richtig

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Bluetooth App startet nicht richtig

    Hoffentlich im richtigen Forum, wenn nicht bitte verschieben.

    Hallo, ich möchte eine App entwickeln, die eine bluetooth-verbindung aufbaut und Messdaten empfängt. Diese sollen einfach angezeigt werden. Durch einen Klick auf ein Button soll man dann die Werte aktualisieren können, siehe Code. Und alles soll, wenn möglich in einer Aktivität umgesetzt werden.

    Leider stürzt die app immer, wenn ich sie auf meinem smartphone starte ab. Kann mir jemand weiter helfen?!!

    Danke
  • Quellcode

    1. package com.example.ziel;
    2. import..
    3. public class Main_Activity extends Activity implements OnItemClickListener {
    4. private Handler handler;
    5. String value;
    6. Array parts;
    7. ArrayAdapter<String> listAdapter;
    8. ListView listView;
    9. BluetoothAdapter btAdapter;
    10. Set<BluetoothDevice> devicesArray;
    11. ArrayList<String> pairedDevices;
    12. ArrayList<BluetoothDevice> devices;
    13. public static final UUID MY_UUID = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");
    14. protected static final int SUCCESS_CONNECT = 0;
    15. protected static final int MESSAGE_READ = 1;
    16. IntentFilter filter;
    17. BroadcastReceiver receiver;
    18. String tag = "debugging";
    19. String ring= "525,32.565,.";
    20. TextView textview1;
    21. TextView textview2;
    22. TextView textview3;
    23. Button button1;
    24. public void aufteilen() {
    25. String[] parts = ring.split("\\.");
    26. textview2.setText("Temp2 "+parts[0]);
    27. textview3.setText("Temp3 "+parts[1]);
    28. }
    29. Handler mHandler = new Handler(){
    30. @Override
    31. public void handleMessage(Message msg) {
    32. // TODO Auto-generated method stub
    33. Log.i(tag, "in handler");
    34. super.handleMessage(msg);
    35. switch(msg.what){
    36. case SUCCESS_CONNECT:
    37. // aktionen
    38. ConnectedThread connectedThread = new ConnectedThread((BluetoothSocket)msg.obj);
    39. Toast.makeText(getApplicationContext(), "CONNECT", 0).show();
    40. String s = "successfully connected";
    41. connectedThread.write(s.getBytes());
    42. Log.i(tag, "connected");
    43. break;
    44. case MESSAGE_READ: // HIER
    45. byte[] readBuf = (byte[])msg.obj;
    46. String string = new String(readBuf);
    47. Toast.makeText(getApplicationContext(), string, 0).show();
    48. break;
    49. }
    50. }
    51. };
    52. @Override
    53. public void onCreate(Bundle savedInstanceState) {
    54. textview2 = (TextView) findViewById(R.id.textView2);
    55. textview3 = (TextView) findViewById(R.id.textView3);
    56. final Button button1 = (Button) findViewById(R.id.button);
    57. button1.setOnClickListener(new View.OnClickListener() {
    58. public void onClick(View v) {
    59. ring = "995,32.757,56";
    60. aufteilen();
    61. }});
    62. super.onCreate(savedInstanceState);
    63. setContentView(R.layout.main);
    64. init();
    65. if(btAdapter==null){
    66. Toast.makeText(getApplicationContext(), "No bluetooth detected", 0).show();
    67. finish();
    68. }
    69. else{
    70. if(!btAdapter.isEnabled()){
    71. turnOnBT();
    72. }
    73. getPairedDevices();
    74. startDiscovery();
    75. }
    76. }
    77. private void startDiscovery() {
    78. // TODO Auto-generated method stub
    79. btAdapter.cancelDiscovery();
    80. btAdapter.startDiscovery();
    81. }
    82. private void turnOnBT() {
    83. // TODO Auto-generated method stub
    84. Intent intent =new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
    85. startActivityForResult(intent, 1);
    86. }
    87. private void getPairedDevices() {
    88. // TODO Auto-generated method stub
    89. devicesArray = btAdapter.getBondedDevices();
    90. if(devicesArray.size()>0){
    91. for(BluetoothDevice device:devicesArray){
    92. pairedDevices.add(device.getName());
    93. }
    94. }
    95. }
    96. private void init() {
    97. // TODO Auto-generated method stub
    98. listView=(ListView)findViewById(R.id.bConnectedNew);
    99. listView.setOnItemClickListener(this);
    100. listAdapter= new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,0);
    101. listView.setAdapter(listAdapter);
    102. btAdapter = BluetoothAdapter.getDefaultAdapter();
    103. pairedDevices = new ArrayList<String>();
    104. filter = new IntentFilter(BluetoothDevice.ACTION_FOUND);
    105. devices = new ArrayList<BluetoothDevice>();
    106. receiver = new BroadcastReceiver(){
    107. @Override
    108. public void onReceive(Context context, Intent intent) {
    109. // TODO Auto-generated method stub
    110. String action = intent.getAction();
    111. if(BluetoothDevice.ACTION_FOUND.equals(action)){
    112. BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
    113. devices.add(device);
    114. String s = "";
    115. for(int a = 0; a < pairedDevices.size(); a++){
    116. if(device.getName().equals(pairedDevices.get(a))){
    117. //hinzufügen
    118. s = "(Paired)";
    119. break;
    120. }
    121. }
    122. listAdapter.add(device.getName()+" "+s+" "+"\n"+device.getAddress());
    123. }
    124. else if(BluetoothAdapter.ACTION_DISCOVERY_STARTED.equals(action)){
    125. }
    126. else if(BluetoothAdapter.ACTION_DISCOVERY_FINISHED.equals(action)){
    127. }
    128. else if(BluetoothAdapter.ACTION_STATE_CHANGED.equals(action)){
    129. if(btAdapter.getState() == btAdapter.STATE_OFF){
    130. turnOnBT();
    131. }
    132. }
    133. }
    134. };
    135. registerReceiver(receiver, filter);
    136. filter = new IntentFilter(BluetoothAdapter.ACTION_DISCOVERY_STARTED);
    137. registerReceiver(receiver, filter);
    138. filter = new IntentFilter(BluetoothAdapter.ACTION_DISCOVERY_FINISHED);
    139. registerReceiver(receiver, filter);
    140. filter = new IntentFilter(BluetoothAdapter.ACTION_STATE_CHANGED);
    141. registerReceiver(receiver, filter);
    142. }
    143. @Override
    144. protected void onPause() {
    145. // TODO Auto-generated method stub
    146. super.onPause();
    147. unregisterReceiver(receiver);
    148. }
    149. @Override
    150. protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    151. // TODO Auto-generated method stub
    152. super.onActivityResult(requestCode, resultCode, data);
    153. if(resultCode == RESULT_CANCELED){
    154. Toast.makeText(getApplicationContext(), "Bluetooth must be enabled to continue", Toast.LENGTH_SHORT).show();
    155. finish();
    156. }
    157. }
    158. public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
    159. long arg3) {
    160. if(btAdapter.isDiscovering()){
    161. btAdapter.cancelDiscovery();
    162. }
    163. if(listAdapter.getItem(arg2).contains("Paired")){
    164. BluetoothDevice selectedDevice = devices.get(arg2);
    165. ConnectThread connect = new ConnectThread(selectedDevice);
    166. connect.start();
    167. Log.i(tag, "in click listener");
    168. }
    169. else{
    170. Toast.makeText(getApplicationContext(), "device is not paired", 0).show();
    171. }
    172. }
    173. private class ConnectThread extends Thread {
    174. private final BluetoothSocket mmSocket;
    175. private final BluetoothDevice mmDevice;
    176. public ConnectThread(BluetoothDevice device) {
    177. BluetoothSocket tmp = null;
    178. mmDevice = device;
    179. Log.i(tag, "construct");
    180. try {
    181. tmp = device.createRfcommSocketToServiceRecord(MY_UUID);
    182. } catch (IOException e) {
    183. Log.i(tag, "get socket failed");
    184. }
    185. mmSocket = tmp;
    186. }
    187. public void run() {
    188. btAdapter.cancelDiscovery();
    189. Log.i(tag, "connect - run");
    190. try {
    191. mmSocket.connect();
    192. Log.i(tag, "connect - succeeded");
    193. } catch (IOException connectException) { Log.i(tag, "connect failed");
    194. try {
    195. mmSocket.close();
    196. } catch (IOException closeException) { }
    197. return;
    198. }
    199. }
    200. public void cancel() {
    201. try {
    202. mmSocket.close();
    203. } catch (IOException e) { }
    204. }
    205. }
    206. public class ConnectedThread extends Thread {
    207. private final BluetoothSocket mmSocket;
    208. private final InputStream mmInStream;
    209. private final OutputStream mmOutStream;
    210. public ConnectedThread(BluetoothSocket socket) {
    211. mmSocket = socket;
    212. InputStream tmpIn = null;
    213. OutputStream tmpOut = null;
    214. try {
    215. tmpIn = socket.getInputStream();
    216. tmpOut = socket.getOutputStream();
    217. } catch (IOException e) {
    218. }
    219. mmInStream = tmpIn;
    220. mmOutStream = tmpOut;
    221. }
    222. public void run() {
    223. byte[] buffer;
    224. int bytes;
    225. while (true) {
    226. try {
    227. buffer = new byte[1024];
    228. bytes = mmInStream.read(buffer);
    229. // sendet zu UI-Activity
    230. mHandler.obtainMessage(MESSAGE_READ, bytes, -1, buffer)
    231. .sendToTarget();
    232. } catch (IOException e) {
    233. break;
    234. }
    235. }
    236. }
    237. public void write(byte[] bytes) {
    238. try {
    239. mmOutStream.write(bytes);
    240. } catch (IOException e) {
    241. }
    242. }
    243. public void cancel() {
    244. try {
    245. mmSocket.close();
    246. } catch (IOException e) {
    247. }
    248. }
    249. } }
    Alles anzeigen
  • ich habe jetzt nur die Reihenfolge der funktionen geändert. Dies hat zur Folge dass die App startet und fragt, ob BT angeschaltet werden soll, was auch geschieht. Allerdings wird nicht nach anderen BT-Geräten gesuht und folglich ist kein Verbindungsaufbau möglich.
    Liegt das eventl immer noch an der Reihenfolge und ist der Code an sich falsch????

    LogCat:

    09-08 11:04:31.020 5971-5971/com.example.ziel W/dalvikvm﹕ threadid=1: thread exiting with uncaught exception (group=0x40e14438)
    09-08 11:05:40.680 7627-7627/com.example.ziel I/Adreno200-EGL﹕ <qeglDrvAPI_eglInitialize:299>: EGL 1.4 QUALCOMM build: AU_LINUX_ANDROID_JB_REL_2.0.3.04.01.01.21.010_msm8625_JB_REL_2.0.3_Merge_release_AU (Merge)
    Build Date: 10/26/12 Fri
    Local Branch:
    Remote Branch: quic/jb_rel_2.0.3
    Local Patches: NONE
    Reconstruct Branch: AU_LINUX_ANDROID_JB_REL_2.0.3.04.01.01.21.010 + NOTHING
  • gammel schrieb:

    09-08 11:04:31.020 5971-5971/com.example.ziel W/dalvikvm﹕ threadid=1: thread exiting with uncaught exception (group=0x40e14438)
    Und um welche Exception handelt es sich?
    Je mehr Käse, desto mehr Löcher.
    Je mehr Löcher, desto weniger Käse.
    Daraus folgt: je mehr Käse, desto weniger Käse.

    »Dies ist ein Forum. Schreibt Eure Fragen in das Forum, nicht per PN!«