2016-03-22 36 views
1

Bluetooth'u başarıyla etkinleştirdim ve yakındaki cihazların listesini görüntüledim, ancak listede görüntülenen cihaza tıklandığında uygulama kapanıyor. Birisi Sadece kodunun altına ile çalıştırmak() yerine bu sorunuBluetooth cihazlarına bağlanamıyor

package com.android.clickandsend; 

import java.io.IOException; 
import java.util.Set; 
import java.util.UUID; 







import android.app.Activity; 
import android.bluetooth.BluetoothAdapter; 
import android.bluetooth.BluetoothDevice; 
import android.bluetooth.BluetoothServerSocket; 
import android.bluetooth.BluetoothSocket; 
import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 
import android.content.IntentFilter; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.ArrayAdapter; 
import android.widget.Button; 
import android.widget.ListView; 
import android.widget.Toast; 
import android.widget.AdapterView.OnItemClickListener; 

public class Bluetooth extends Activity{ 
final BroadcastReceiver bReceiver = new BroadcastReceiver() { 
     public void onReceive(Context context, Intent intent) { 
      String action = intent.getAction(); 
      // When discovery finds a device 
      if (BluetoothDevice.ACTION_FOUND.equals(action)) { 
       // Get the BluetoothDevice object from the Intent 
       BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE); 
       // add the name and the MAC address of the object to the arrayAdapter 
       BTArrayAdapter.add(device.getName()); 
       BTArrayAdapter.notifyDataSetChanged(); 
      } 
     } 
    }; 
private static final int REQUEST_ENABLE_BT = 1; 
public static BluetoothAdapter myBluetoothAdapter; 
private ListView myListView; 
public final static UUID my_UUID = UUID.fromString("00001802-0000-1000-8000-00805f9b34fb"); 
private ArrayAdapter<String> BTArrayAdapter; 
private Set<BluetoothDevice> pairedDevices; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.bluetooth); 
    myBluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); 
    Button b=(Button)findViewById(R.id.button1); 
    if(myBluetoothAdapter == null){ 
     Toast.makeText(getApplicationContext(),"Your device does not support Bluetooth", 
       Toast.LENGTH_LONG).show(); 
     finish(); 
    } 
    else { 
     if (!myBluetoothAdapter.isEnabled()) { 
      Intent turnOnIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE); 
      startActivityForResult(turnOnIntent, REQUEST_ENABLE_BT); 

      Toast.makeText(getApplicationContext(),"Bluetooth turned on" , 
        Toast.LENGTH_LONG).show(); 
      } 
      else{ 
      Toast.makeText(getApplicationContext(),"Bluetooth is already on", 
        Toast.LENGTH_LONG).show(); 
      } 
    } 
    myListView=(ListView)findViewById(R.id.listView1); 

    BTArrayAdapter= new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1); 

    myListView.setAdapter(BTArrayAdapter); 



    b.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 


        if (myBluetoothAdapter.isDiscovering()) { 
         // the button is pressed when it discovers, so cancel the discovery 
         myBluetoothAdapter.cancelDiscovery(); 
         Toast.makeText(getApplicationContext(), "cancel dis", Toast.LENGTH_SHORT).show(); 
        } 
        else { 
         BTArrayAdapter.clear(); 
         myBluetoothAdapter.startDiscovery(); 
         Toast.makeText(getApplicationContext(), "start dis", Toast.LENGTH_SHORT).show(); 
         registerReceiver(bReceiver, new IntentFilter(BluetoothDevice.ACTION_FOUND));  
        } 





      myListView.setOnItemClickListener(new OnItemClickListener() { 
       @Override 
        public void onItemClick(AdapterView<?> adapterView, View view, int position, long id) { 
        String itemValue = (String) myListView.getItemAtPosition(position); 

         String MAC = itemValue.substring(itemValue.length() - 17); 

         BluetoothDevice bluetoothDevice = myBluetoothAdapter.getRemoteDevice(MAC); 
         ConnectingThread t = new ConnectingThread(bluetoothDevice); 
         t.start(); 
        } 
      }); 
     } 
    }); 
    Button c=(Button)findViewById(R.id.button2); 
    c.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      ListeningThread t = new ListeningThread(); 
      t.start(); 
     } 
    }); 

} 




@Override 
protected void onDestroy() { 
    // TODO Auto-generated method stub 
    super.onDestroy(); 
    unregisterReceiver(bReceiver); 
} 

    } 
    class ConnectingThread extends Thread { 
private final BluetoothSocket bluetoothSocket; 
private final BluetoothDevice bluetoothDevice; 


public ConnectingThread(BluetoothDevice device) { 

    BluetoothSocket temp = null; 
    bluetoothDevice = device; 

    // Get a BluetoothSocket to connect with the given BluetoothDevice 
    try { 
     temp = bluetoothDevice.createRfcommSocketToServiceRecord(Bluetooth.my_UUID); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
    bluetoothSocket = temp; 
} 

public void run() { 
    Bluetooth.myBluetoothAdapter.cancelDiscovery(); 
    // Cancel any discovery as it will slow down the connection 


    try { 
     // This will block until it succeeds in connecting to the device 
     // through the bluetoothSocket or throws an exception 
     bluetoothSocket.connect(); 
    } catch (IOException connectException) { 
     connectException.printStackTrace(); 
     try { 
      bluetoothSocket.close(); 
     } catch (IOException closeException) { 
      closeException.printStackTrace(); 
     } 
    } 

    // Code to manage the connection in a separate thread 
    /* 
     manageBluetoothConnection(bluetoothSocket); 
    */ 
} 

// Cancel an open connection and terminate the thread 
public void cancel() { 
    try { 
     bluetoothSocket.close(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 
} 
class ListeningThread extends Thread { 
private final BluetoothServerSocket bluetoothServerSocket; 
private final static UUID uuid = UUID.fromString("00001802-0000-1000-8000-00805f9b34fb"); 
String name="help"; 
public ListeningThread() { 
    BluetoothServerSocket temp = null; 
    try { 
     temp = Bluetooth.myBluetoothAdapter.listenUsingRfcommWithServiceRecord(name, uuid); 

    } catch (IOException e) { 
      e.printStackTrace(); 
    } 
     bluetoothServerSocket = temp; 
} 

public void run() { 
    BluetoothSocket bluetoothSocket; 
    // This will block while listening until a BluetoothSocket is returned 
    // or an exception occurs 
    while (true) { 
     try { 
      bluetoothSocket = bluetoothServerSocket.accept(); 
     } catch (IOException e) { 
      break; 
     } 
     // If a connection is accepted 
     if (bluetoothSocket != null) { 

      Toast.makeText(getApplicationContext(), "A connection has been accepted.", 
        Toast.LENGTH_SHORT).show(); 
      break; 
     } 
      // Manage the connection in a separate thread 

      try { 
       bluetoothServerSocket.close(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
      break; 
     } 
    } 


private Context getApplicationContext() { 
    // TODO Auto-generated method stub 
    return null; 
} 

// Cancel the listening socket and terminate the thread 
public void cancel() { 
    try { 
     bluetoothServerSocket.close(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 
} 
+1

Logcat hata mesajınızı gönderebilir misiniz? – Raghavendra

cevap

0

cevap verirsen sorun, gerçekten yararlı olacağını anlamaya mümkün değil, sorun olabilir özellikle cihaza bağlanmaya çalışır zaman gibidir Zaten bazı çevre birimleri ile bağlanmış bu yüzden ilk önce onu ayırmanız gerekir ve karşılaştığınız herhangi bir sorun varsa bana izin verin.

try { 

    bluetoothSocket.close(); 
    bluetoothSocket.disconnect(); 
    bluetoothSocket.connect(); 
} catch (IOException connectException) { 
    connectException.printStackTrace(); 
    try { 
     bluetoothSocket.close(); 
    } catch (IOException closeException) { 
     closeException.printStackTrace(); 
    } 
} 
+0

no, aynı hatayı gösteriyor –

İlgili konular