Ciao a tutti Androidiani!
Sono di nuovo qua con uno dei miei tanti problemi di programmazione!
Sto sviluppando un app che (per ora) mi scansiona i dispositivi bluetooth presenti nella zona e mi li visualizza a schermo. Stessa cosa deve farla con i dispositivi già associati con il terminale. Vi posto il codice e di seguito vi spiego i problemi che riscontro:
1public class Bluetooth extends Activity {
2
3ArrayAdapter<String> mAA;
4ListView lv;
5private static final int REQUEST_ENABLE_BT = 1;
6
7
8protected void onCreate(Bundle savedInstanceState) {
9// TODO Auto-generated method stub
10super.onCreate(savedInstanceState);
11setContentView(R.layout.bluetooth);
12lv = (ListView) findViewById(R.id.lv);
13mAA = new ArrayAdapter<String>(this, R.id.lv);
14BluetoothAdapter mBA = BluetoothAdapter.getDefaultAdapter();
15if (!mBA.isEnabled()) {
16Intent enableBtIntent = new Intent(
17BluetoothAdapter.ACTION_REQUEST_ENABLE);
18startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT);
19}
20Set<BluetoothDevice> pairedDevices = mBA.getBondedDevices();
21// Se c'è un device già riconosciuto
22if (pairedDevices.size() > 0) {
23// Loop attraverso i device riconosciuti
24for (BluetoothDevice device : pairedDevices) {
25// Aggiunge il nome e l'indirizzo in un ArrayAdapter da mostrare
26// in una ListView
27mAA.add(device.getName() + "\n" + device.getAddress());
28lv.setAdapter(mAA);
29
30}
31}
32final BroadcastReceiver mReceiver = new BroadcastReceiver() {
33
34public void onReceive(Context context, Intent intent) {
35// TODO Auto-generated method stub
36String action = intent.getAction();
37// quando si trovano alcuni device
38if (BluetoothDevice.ACTION_FOUND.equals(action)) {
39// Prelevare l'oggetto "dispositivo bluetooth" dall'Intent
40BluetoothDevice device = intent
41.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
42// Aggiungere il nome e lìindirizzo in un arrayadapter da
43// mostrare in una ListView;
44mAA.add(device.getName() + "\n" + device.getAddress());
45}
46
47}
48
49};
50IntentFilter filter = new IntentFilter(BluetoothDevice.ACTION_FOUND);
51registerReceiver(mReceiver, filter);
52mBA.cancelDiscovery();
53lv.setAdapter(mAA);
54}
55}
56
1) Se avvio l'applicazione con bluetooth spento, mi compare il mitico alert che mi chiede se voglio attivare il bluetooth. Confermo la richiesta, compare l'alert di attivazione del bluetooth e successivamente... Schermata Nera. Teoricamente dovrebbe saltarmi fuori un dispositivo associato (in questo caso, il mio portatile) ma la schermata rimane costantemente nera (per nera si intende che sono visibili la barra del nome dell'app e la barra di stato di android. Il telefono non va in Freeze)
2) Se avvio l'applicazione con bluetooth acceso, invece, l'app va in crash ed esce. Qualche suggerimento a riguardo?
Precisazioni:
- Nel manifest ho messo la stringa <uses-permission android:name="android.permission.BLUETOOTH" />
- Layout XML:141
2<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
3android:layout_width="match_parent"
4android:layout_height="match_parent"
5android:orientation="vertical" >
6
7<ListView
8android:id="@+id/lv"
9android:layout_width="wrap_content"
10android:layout_height="wrap_content"
11android:text="TextView" >
12
13</ListView>
14</LinearLayout>
Grazie in anticipo per l'aiuto![]()