Autore Topic: Problema BluetoothAdapter.getDefaultAdapter()  (Letto 526 volte)

Offline liogiu2

  • Nuovo arrivato
  • *
  • Post: 5
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    Windows 7
Problema BluetoothAdapter.getDefaultAdapter()
« il: 07 Maggio 2013, 19:28:40 CEST »
0
Ciao a tutti,
Sto realizzando un'applicazione android per la comunicazione con Arduino.
Appena mi approccio con il bluetooth iniziano subito gli errori quando vado a provare l'applicazione sul mio samsung galaxy ace:
Codice (Java): [Seleziona]
 private BluetoothAdapter mBluetoothAdapter = null;
         ListView lista;

        @Override
        protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_main);
                mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
                 if (mBluetoothAdapter == null) {
                    Toast.makeText(this, "Bluetooth is not available", Toast.LENGTH_LONG).show();
                    finish();
                    return;
                }
Metto il manifest per farvi vedere che il permesso c'è (ho provato sia con che senza BLUETOOTH_ADMIN):
Codice (XML): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
   package="domoarduino.restart"
   android:versionCode="1"
   android:versionName="1.0" >

     <uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
    <uses-sdk
       android:minSdkVersion="8"
       android:targetSdkVersion="10" />

    <application
       android:allowBackup="true"
       android:icon="@drawable/ic_launcher"
       android:label="@string/app_name"
       android:theme="@style/AppTheme" >
        <activity
           android:name="domoarduino.restart.MainActivity"
           android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>
Grazie al debug capisco che l'errore è nel
Codice: [Seleziona]
mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();Quando faccio step into mi da la schermata messa in allegato.
Posto anche il logcat dell'errore:
Codice: [Seleziona]
05-07 19:25:51.849: E/AndroidRuntime(3111): FATAL EXCEPTION: main
05-07 19:25:51.849: E/AndroidRuntime(3111): java.lang.RuntimeException: Unable to start activity ComponentInfo{domoarduino.restart/domoarduino.restart.MainActivity}: java.lang.NullPointerException
05-07 19:25:51.849: E/AndroidRuntime(3111):         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1651)
05-07 19:25:51.849: E/AndroidRuntime(3111):         at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667)
05-07 19:25:51.849: E/AndroidRuntime(3111):         at android.app.ActivityThread.access$1500(ActivityThread.java:117)
05-07 19:25:51.849: E/AndroidRuntime(3111):         at android.app.ActivityThread$H.handleMessage(ActivityThread.java:935)
05-07 19:25:51.849: E/AndroidRuntime(3111):         at android.os.Handler.dispatchMessage(Handler.java:99)
05-07 19:25:51.849: E/AndroidRuntime(3111):         at android.os.Looper.loop(Looper.java:130)
05-07 19:25:51.849: E/AndroidRuntime(3111):         at android.app.ActivityThread.main(ActivityThread.java:3687)
05-07 19:25:51.849: E/AndroidRuntime(3111):         at java.lang.reflect.Method.invokeNative(Native Method)
05-07 19:25:51.849: E/AndroidRuntime(3111):         at java.lang.reflect.Method.invoke(Method.java:507)
05-07 19:25:51.849: E/AndroidRuntime(3111):         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867)
05-07 19:25:51.849: E/AndroidRuntime(3111):         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625)
05-07 19:25:51.849: E/AndroidRuntime(3111):         at dalvik.system.NativeStart.main(Native Method)
05-07 19:25:51.849: E/AndroidRuntime(3111): Caused by: java.lang.NullPointerException
05-07 19:25:51.849: E/AndroidRuntime(3111):         at domoarduino.restart.MainActivity.onCreate(MainActivity.java:32)
05-07 19:25:51.849: E/AndroidRuntime(3111):         at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
05-07 19:25:51.849: E/AndroidRuntime(3111):         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1615)
05-07 19:25:51.849: E/AndroidRuntime(3111):         ... 11 more

Qualche idea?

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Problema BluetoothAdapter.getDefaultAdapter()
« Risposta #1 il: 07 Maggio 2013, 20:53:08 CEST »
0
Sicuro che la riga 32 sia questa?

Codice (Java): [Seleziona]
mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
Perchè non c'è niente che può generare una NullPointerException.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline liogiu2

  • Nuovo arrivato
  • *
  • Post: 5
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    Windows 7
Re:Problema BluetoothAdapter.getDefaultAdapter()
« Risposta #2 il: 07 Maggio 2013, 21:09:56 CEST »
0
La riga non è la 32.. ma se io metto il break point in quella riga e poi faccio step over inizia quell'eccezione.. anche se circondo con un try catch.. Invece se commento funziona normalmente.. quindi sono sicuro al 100% che il problema è in quell'istruzione!

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Problema BluetoothAdapter.getDefaultAdapter()
« Risposta #3 il: 07 Maggio 2013, 21:16:29 CEST »
0
Ma qual'è la riga 32?

L'eccezione parte da quella riga, quindi bisogna aver fiducia nel logcat e cominciare a capire perchè parte dalla riga 32.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline liogiu2

  • Nuovo arrivato
  • *
  • Post: 5
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    Windows 7
Re:Problema BluetoothAdapter.getDefaultAdapter()
« Risposta #4 il: 08 Maggio 2013, 15:50:05 CEST »
0
Invio tutto il codice..

Codice (Java): [Seleziona]
package domoarduino.restart;

import android.app.Activity;
import android.bluetooth.BluetoothAdapter;
import android.os.Bundle;
import android.os.Looper;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;

public class MainActivity extends Activity {
       
         private BluetoothAdapter mBluetoothAdapter = null;
         ListView lista;

        @Override
        protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_main);
                mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
                 if (mBluetoothAdapter == null) {
                    Toast.makeText(this, "Bluetooth is not available", Toast.LENGTH_LONG).show();
                    finish();
                    return;
                }
                 
                 String [] menu = {"Gestione", "Visualizzazione", "Connessione Bluetooth"};
                        ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String> (this, android.R.layout.simple_list_item_1,menu);
                        lista.setAdapter(arrayAdapter);
                        lista.setOnItemClickListener(new OnItemClickListener() {

                                @Override
                                public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                                                long arg3) {
                                        // TODO Auto-generated method stub
                                        switch(arg2)
                                        {
                                        case 0:
                                                break;
                                        case 1:
                                                break;
                                        case 2:
                                                break;
                                        }
                                }

                                       
                               
                      });
        }

        /*@Override
        public boolean onCreateOptionsMenu(Menu menu) {
                // Inflate the menu; this adds items to the action bar if it is present.
                getMenuInflater().inflate(R.menu.main, menu);
                return true;
        }*/


}

La riga 32 è la:
Codice (Java): [Seleziona]
lista.setAdapter(arrayAdapter);

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Problema BluetoothAdapter.getDefaultAdapter()
« Risposta #5 il: 08 Maggio 2013, 15:52:59 CEST »
+1
Sembra manchi il rigo in cui assegni a lista il riferimento alla listview del tuo layout.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store