Autore Topic: [Bluetooth] Ricerca dispositivi, attivazione, visibilità  (Letto 3959 volte)

Offline nikel90

  • Nuovo arrivato
  • *
  • Post: 11
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    eee pad transformer
  • Sistema operativo:
    3.1
[Bluetooth] Ricerca dispositivi, attivazione, visibilità
« il: 14 Giugno 2011, 08:14:15 CEST »
0
Buongiorno!

sono un totale niubbo nel programmare android (con windows mobile era tutt'un altra storia)
stavo tentando di scrivere un programmino...
che secondo i miei calcoli... a questo punto dovrebbe
1. attivare il bluetooth
2. chiedere di rendere il dispositivo visibile
3. cercare i dispositivi e farli vedere in un dialog con una lista...

ovviamente il programma chrasha appena clicco il bottone "connect" -.-
spero possiate aiutarmi nel risolvere questa accozzaglia di codice senza senso!! ^^

Grazie buona giornata!!

Codice (Java): [Seleziona]
package blue.wm;

import android.app.Activity;
import android.app.AlertDialog;
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
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.view.View.OnClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.Toast;

public class BlueWMActivity extends Activity {
    protected static final int REQUEST_ENABLE_BT = 0;

        /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        this.connectbtn = (Button)this.findViewById(R.id.connect);
        connectbtn.setOnClickListener(connectlistener);
     // Register the BroadcastReceiver
        IntentFilter filter = new IntentFilter(BluetoothDevice.ACTION_FOUND);
        registerReceiver(mReceiver, filter); // Don't forget to unregister during onDestroy
        //PER IL DIALOG
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setTitle("Select your phone");
        builder.setAdapter(mArrayAdapter, null); //così dovrei vedere il coso!!! mi manca l'evento x vedere cosa ho cliuccato!
        alert = builder.create();
    }
   
    private Button connectbtn;
    private ArrayAdapter<String> mArrayAdapter; //******************************* sono stringhe che devo mettere in una listview!
    private AlertDialog alert;
   
    private OnClickListener connectlistener = new OnClickListener()
    {
        public void onClick(View v)
        {
          // do something when the button is clicked
                BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
                if (mBluetoothAdapter == null) {
                        Toast.makeText(BlueWMActivity.this, "Cannot find bluetooth adapter", Toast.LENGTH_LONG).show();
                }
                if (!mBluetoothAdapter.isEnabled())
                {
                    Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
                    startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT);
                }
                //Abilitato il bluetooth (se non si è abilitato esplode tutto)
                Intent discoverableIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);
                discoverableIntent.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 300);
                startActivity(discoverableIntent);
                //Reso visibile il dispositivo (se nn è andata bene me ne sbatto...)
                if (mBluetoothAdapter.startDiscovery()) Toast.makeText(BlueWMActivity.this, "Discovery Started", Toast.LENGTH_LONG).show();
                //ho avviato il discovery.
                alert.show();
                mBluetoothAdapter.cancelDiscovery(); // da chiamare quando ho finito!!! ######################################
        }
    };
       
 // Create a BroadcastReceiver for ACTION_FOUND
    private final BroadcastReceiver mReceiver = 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 address to an array adapter to show in a ListView
                mArrayAdapter.add(device.getName() + "\n" + device.getAddress());
            }
        }
    };
}

layout
Codice (XML): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="fill_parent"
   android:layout_height="fill_parent">
    <Button
       android:id="@+id/connect"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_alignParentRight="true"
       android:layout_marginLeft="10dip"
       android:text="Connect" />
</RelativeLayout>

manifest
Codice (XML): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
     package="blue.wm"
     android:versionCode="1"
     android:versionName="1.0">
    <uses-sdk android:minSdkVersion="12" />
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name=".BlueWMActivity"
                 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>

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:[Bluetooth] Ricerca dispositivi, attivazione, visibilità
« Risposta #1 il: 14 Giugno 2011, 08:30:03 CEST »
0
Anche a costo di sembrare brusco ;-) te lo dico in quattro parole: implementazione strutturalmente non corretta.

Tu hai messo tutta la logica di gestione della connessione BlueTooth nel main thread (quello della UI), cosa rigorosamente vietata. Deve essere gestita in un thread separato. Ti consiglio di partire dall'esempio ufficiale Google di nome BluetoothChat, che rappresenta un ottimo punto di partenza per la struttura dell'applicazione.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline nikel90

  • Nuovo arrivato
  • *
  • Post: 11
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    eee pad transformer
  • Sistema operativo:
    3.1
Re:[Bluetooth] Ricerca dispositivi, attivazione, visibilità
« Risposta #2 il: 14 Giugno 2011, 13:48:26 CEST »
0
il sample l'ho visto pero per uno alle prime armi con il java l'ho trovato estremamente difficile!! (provero a guardarlo con piu calma magari..)

Offline Nicola_D

  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:[Bluetooth] Ricerca dispositivi, attivazione, visibilità
« Risposta #3 il: 14 Giugno 2011, 14:12:21 CEST »
0
il sample l'ho visto pero per uno alle prime armi con il java l'ho trovato estremamente difficile!! (provero a guardarlo con piu calma magari..)
perchè uno alle prime armi con java non dovrebbe fare un'applicazione che usa il bluetooth in android, ma dovrebbe prima impararsi il java, poi capire un po come funziona android e SOLO dopo passare al discorso bluetooth su android...
IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia

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:[Bluetooth] Ricerca dispositivi, attivazione, visibilità
« Risposta #4 il: 14 Giugno 2011, 14:13:05 CEST »
0
il sample l'ho visto pero per uno alle prime armi con il java l'ho trovato estremamente difficile!! (provero a guardarlo con piu calma magari..)

Eh lo so, ci ho messo un bel po' a capirlo.

Purtroppo quella è probabilmente la versione più semplice di gestione completa (invio+ricezione) del Bluetooth su Android.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline nikel90

  • Nuovo arrivato
  • *
  • Post: 11
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    eee pad transformer
  • Sistema operativo:
    3.1
Re:[Bluetooth] Ricerca dispositivi, attivazione, visibilità
« Risposta #5 il: 20 Giugno 2011, 18:07:11 CEST »
0
ok in un momento di pausa ho dato un occhiata al sample... peccato che installato sul tablet.. (honeycomb) l'app crasha appena viene aperta... -.-

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:[Bluetooth] Ricerca dispositivi, attivazione, visibilità
« Risposta #6 il: 20 Giugno 2011, 18:13:56 CEST »
0
ok in un momento di pausa ho dato un occhiata al sample... peccato che installato sul tablet.. (honeycomb) l'app crasha appena viene aperta... -.-

Quale sample hai usato?

Lo chiedo perchè scaricando i SAMPLES usando AVD MANAGER, si nota che la BluetoothChat per le API-12 ha sorgenti leggermente diversi da quella delle API precedenti. Può darsi sia dovuto a quello?
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline nikel90

  • Nuovo arrivato
  • *
  • Post: 11
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    eee pad transformer
  • Sistema operativo:
    3.1
Re:[Bluetooth] Ricerca dispositivi, attivazione, visibilità
« Risposta #7 il: 20 Giugno 2011, 18:31:40 CEST »
0
ho usato quelli delle api 12... compilati con eclipse.. non so dirti altro...

update: ho compilato anche su api 11... non cambia..
« Ultima modifica: 20 Giugno 2011, 18:37:44 CEST da nikel90 »

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:[Bluetooth] Ricerca dispositivi, attivazione, visibilità
« Risposta #8 il: 20 Giugno 2011, 19:01:50 CEST »
0
dal LogCat si capisce come mai?
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline nikel90

  • Nuovo arrivato
  • *
  • Post: 11
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    eee pad transformer
  • Sistema operativo:
    3.1
Re:[Bluetooth] Ricerca dispositivi, attivazione, visibilità
« Risposta #9 il: 21 Giugno 2011, 18:42:03 CEST »
0
ecco ciò che esce da logcat...

Codice: [Seleziona]
D/FileManagerActivity(  995): numSelected : false

I/TextType(  207): TextType = 0x0

V/TLINE   (  995): new: android.text.TextLine@40d412c8

I/ActivityManager(  143): Displayed com.asus.filemanager/com.asus.filemanager2.activity.FileManagerActivity: +817ms

D/FileListAdapter(  995): containerView:get Postion :3

D/FileManagerActivity(  995): numSelected : false

D/dalvikvm(  219): GC_EXPLICIT freed 775K, 19% free 20902K/25735K, paused 7ms+6ms

D/FileListAdapter(  995): containerView:get Postion :0

D/FileManagerActivity(  995): numSelected : false

D/FileListAdapter(  995): containerView:get Postion :3

I/ActivityManager(  143): Starting: Intent { act=android.intent.action.VIEW dat=file:///sdcard/Download/1/BluetoothChatNew.apk typ=application/vnd.android.package-archive cmp=com.android.packageinstaller/.PackageInstallerActivity } from pid 995

I/ActivityManager(  143): Start proc com.android.packageinstaller for activity com.android.packageinstaller/.PackageInstallerActivity: pid=1008 uid=10023 gids={}

D/WindowManager(  143): readLidState, sw:1

D/WindowManager(  143): adjustConfigurationLw, config:{ scale=1.0 imsi=0/0 loc=null touch=3 keys=2/1/1 nav=1/1 orien=L layout=0x10000014 uiMode=0x0} mLidOpen:1 mHasDockFeature:true mHasHallSensorFeature:true config.hardKeyboardHidden:1

I/PackageParser( 1008): com.example.android.BluetoothChat: compat added android.permission.WRITE_EXTERNAL_STORAGE android.permission.READ_PHONE_STATE

D/dalvikvm( 1008): GC_FOR_ALLOC freed 40K, 4% free 6315K/6531K, paused 32ms

I/dalvikvm-heap( 1008): Grow heap (frag case) to 6.708MB for 513744-byte allocation

D/dalvikvm( 1008): GC_FOR_ALLOC freed 2K, 4% free 6815K/7047K, paused 30ms

V/TLINE   ( 1008): new: android.text.TextLine@408cbf88

D/dalvikvm( 1008): GC_CONCURRENT freed 16K, 3% free 6887K/7047K, paused 3ms+5ms

V/TLINE   ( 1008): new: android.text.TextLine@40836e48

I/ActivityManager(  143): Displayed com.android.packageinstaller/.PackageInstallerActivity: +566ms

I/PackageInstaller( 1008): Canceling installation

D/WindowManager(  143): readLidState, sw:1

D/WindowManager(  143): adjustConfigurationLw, config:{ scale=1.0 imsi=0/0 loc=null touch=3 keys=2/1/1 nav=1/1 orien=L layout=0x10000014 uiMode=0x0} mLidOpen:1 mHasDockFeature:true mHasHallSensorFeature:true config.hardKeyboardHidden:1

D/FileManagerActivity(  995): numSelected : false

I/ActivityManager(  143): No longer want com.google.android.music (pid 696): hidden #16

W/InputManagerService(  143): Window already focused, ignoring focus gain of: com.android.internal.view.IInputMethodClient$Stub$Proxy@4177e190

I/ActivityManager(  143): Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.HOME] flg=0x10200000 cmp=com.android.launcher/com.android.launcher2.Launcher } from pid 143

D/WindowManager(  143): readLidState, sw:1

D/WindowManager(  143): adjustConfigurationLw, config:{ scale=1.0 imsi=0/0 loc=null touch=3 keys=2/1/1 nav=1/1 orien=L layout=0x10000014 uiMode=0x0} mLidOpen:1 mHasDockFeature:true mHasHallSensorFeature:true config.hardKeyboardHidden:1

I/TextType(  207): TextType = 0x0

W/InputManagerService(  143): Starting input on non-focused client com.android.internal.view.IInputMethodClient$Stub$Proxy@41d02ee8 (uid=10049 pid=995)

I/ActivityManager(  143): No longer want com.android.providers.calendar (pid 590): hidden #16

I/ActivityManager(  143): Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.example.android.BluetoothChat/.BluetoothChat } from pid 219

I/ActivityManager(  143): Start proc com.example.android.BluetoothChat for activity com.example.android.BluetoothChat/.BluetoothChat: pid=1017 uid=10075 gids={3001, 3002, 1015}

D/WindowManager(  143): readLidState, sw:1

D/WindowManager(  143): adjustConfigurationLw, config:{ scale=1.0 imsi=0/0 loc=null touch=3 keys=2/1/1 nav=1/1 orien=L layout=0x10000014 uiMode=0x0} mLidOpen:1 mHasDockFeature:true mHasHallSensorFeature:true config.hardKeyboardHidden:1

D/TabletStatusBar(  192): lights on

E/BluetoothChat( 1017): +++ ON CREATE +++

D/dalvikvm( 1017): GC_FOR_ALLOC freed 34K, 4% free 6307K/6531K, paused 34ms

I/dalvikvm-heap( 1017): Grow heap (frag case) to 6.700MB for 513744-byte allocation

D/dalvikvm( 1017): GC_FOR_ALLOC freed <1K, 4% free 6808K/7047K, paused 38ms

E/BluetoothChat( 1017): ++ ON START ++

E/BluetoothChat( 1017): + ON RESUME +

I/ActivityManager(  143): Starting: Intent { act=android.bluetooth.adapter.action.REQUEST_ENABLE cmp=com.android.settings/.bluetooth.RequestPermissionActivity } from pid 1017

D/dalvikvm( 1017): GC_CONCURRENT freed 2K, 4% free 6827K/7047K, paused 3ms+5ms

E/BluetoothChat( 1017): - ON PAUSE -

D/WindowManager(  143): readLidState, sw:1

D/WindowManager(  143): adjustConfigurationLw, config:{ scale=1.0 imsi=0/0 loc=null touch=3 keys=2/1/1 nav=1/1 orien=L layout=0x10000014 uiMode=0x0} mLidOpen:1 mHasDockFeature:true mHasHallSensorFeature:true config.hardKeyboardHidden:1

I/ActivityManager(  143): Starting: Intent { act=com.android.settings.bluetooth.ACTION_INTERNAL_REQUEST_BT_ON cmp=com.android.settings/.bluetooth.RequestPermissionHelperActivity } from pid 759

V/TLINE   ( 1017): new: android.text.TextLine@40822ff8

D/WindowManager(  143): readLidState, sw:1

D/WindowManager(  143): adjustConfigurationLw, config:{ scale=1.0 imsi=0/0 loc=null touch=3 keys=2/1/1 nav=1/1 orien=L layout=0x10000014 uiMode=0x0} mLidOpen:1 mHasDockFeature:true mHasHallSensorFeature:true config.hardKeyboardHidden:1

V/TLINE   ( 1017): new: android.text.TextLine@408be258

I/ActivityManager(  143): Displayed com.example.android.BluetoothChat/.BluetoothChat: +327ms

I/ActivityManager(  143): Displayed com.android.settings/.bluetooth.RequestPermissionHelperActivity: +203ms

I/ActivityManager(  143): Displayed com.android.settings/.bluetooth.RequestPermissionActivity: +371ms

D/BluetoothService(  143): Bluetooth state 10 -> 11

I/bluedroid(  143): Starting hciattach daemon

D/brcm_patchram_plus( 1026): Read ep bt addr:F4:6D:04:3E:E0:0F

D/brcm_patchram_plus( 1026):

V/BluetoothEventManager(  759): Received android.bluetooth.adapter.action.STATE_CHANGED

I/ActivityManager(  143): Start proc com.android.bluetooth for broadcast com.android.bluetooth/.opp.BluetoothOppReceiver: pid=1027 uid=10060 gids={3003, 3002, 3001, 1015}

D/WindowManager(  143): readLidState, sw:1

D/WindowManager(  143): adjustConfigurationLw, config:{ scale=1.0 imsi=0/0 loc=null touch=3 keys=2/1/1 nav=1/1 orien=L layout=0x10000014 uiMode=0x0} mLidOpen:1 mHasDockFeature:true mHasHallSensorFeature:true config.hardKeyboardHidden:1

I/ActivityThread( 1027): Pub com.android.bluetooth.opp: com.android.bluetooth.opp.BluetoothOppProvider

I/TextType(  207): TextType = 0x0

E/brcm_patchram_plus( 1026): Done setting line discpline

I/bluedroid(  143): Starting bluetoothd deamon

D/BluetoothEventLoop(  143): Property Changed: UUIDs : 1

D/BluetoothEventLoop(  143): Property Changed: UUIDs : 2

D/BluetoothEventLoop(  143): Property Changed: Powered : true

D/BluetoothEventLoop(  143): Property Changed: Name : BCM4329B1 37.4 MHz Class 1.5 Murata QJ Module

D/BluetoothEventLoop(  143): Property Changed: Class : 524556

D/BluetoothEventLoop(  143): Property Changed: Pairable : true

D/BluetoothEventLoop(  143): Property Changed: Discoverable : true

D/BluetoothEventLoop(  143): Property Changed: Name : Transformer TF101

D/BluetoothEventLoop(  143): Property Changed: UUIDs : 3

E/BluetoothService.cpp(  143): setBluetoothTetheringNative true

D/BluetoothEventLoop(  143): Property Changed: UUIDs : 4

D/BluetoothEventLoop(  143): Property Changed: UUIDs : 5

D/BluetoothEventLoop(  143): Property Changed: Class : 1573132

D/BluetoothEventLoop(  143): Property Changed: UUIDs : 6

D/BluetoothService(  143): Bluetooth state 11 -> 12

D/BluetoothEventLoop(  143): Property Changed: Pairable : true

V/BluetoothEventManager(  759): Received android.bluetooth.adapter.action.STATE_CHANGED

D/LocalBluetoothProfileManager(  759): Adding local A2DP profile

D/LocalBluetoothProfileManager(  759): Adding local HEADSET profile

D/LocalBluetoothProfileManager(  759): Adding local OPP profile

D/BluetoothEventLoop(  143): Property Changed: Class : 5767436

D/BluetoothEventLoop(  143): Property Changed: Class : 5898508

D/WindowManager(  143): readLidState, sw:1

I/TextType(  207): TextType = 0x0

D/WindowManager(  143): adjustConfigurationLw, config:{ scale=1.0 imsi=0/0 loc=null touch=3 keys=2/1/1 nav=1/1 orien=L layout=0x10000014 uiMode=0x0} mLidOpen:1 mHasDockFeature:true mHasHallSensorFeature:true config.hardKeyboardHidden:1

D/BluetoothChat( 1017): onActivityResult -1

D/BluetoothChat( 1017): setupChat()

E/BluetoothChat( 1017): + ON RESUME +

D/BluetoothChatService( 1017): start

D/BluetoothChatService( 1017): setState() 0 -> 1

D/BluetoothEventLoop(  143): Property Changed: UUIDs : 7

D/BluetoothService(  143): new handle 10007

W/KeyboardEx(  207): loadKeyboard - non-fatal parsing problem

D/DockEventReceiver(  759): finishStartingService: stopping service

D/BluetoothEventLoop(  143): Property Changed: UUIDs : 8

D/BluetoothChatService( 1017): Socket Type: SecureBEGIN mAcceptThreadThread[Thread-10,5,main]

W/KeyboardEx(  207): loadKeyboard - non-fatal parsing problem

D/BluetoothService(  143): new handle 10008

D/BluetoothChatService( 1017): Socket Type: InsecureBEGIN mAcceptThreadThread[Thread-11,5,main]

D/dalvikvm(  759): GC_CONCURRENT freed 251K, 6% free 7862K/8327K, paused 2ms+13ms

I/BluetoothChat( 1017): MESSAGE_STATE_CHANGE: 1

D/AndroidRuntime( 1017): Shutting down VM

W/dalvikvm( 1017): threadid=1: thread exiting with uncaught exception (group=0x4020c760)

E/AndroidRuntime( 1017): FATAL EXCEPTION: main

E/AndroidRuntime( 1017): java.lang.NullPointerException

E/AndroidRuntime( 1017):         at com.example.android.BluetoothChat.BluetoothChat.setStatus(BluetoothChat.java:235)

E/AndroidRuntime( 1017):         at com.example.android.BluetoothChat.BluetoothChat.access$4(BluetoothChat.java:233)

E/AndroidRuntime( 1017):         at com.example.android.BluetoothChat.BluetoothChat$2.handleMessage(BluetoothChat.java:260)

E/AndroidRuntime( 1017):         at android.os.Handler.dispatchMessage(Handler.java:99)

E/AndroidRuntime( 1017):         at android.os.Looper.loop(Looper.java:132)

E/AndroidRuntime( 1017):         at android.app.ActivityThread.main(ActivityThread.java:4025)

E/AndroidRuntime( 1017):         at java.lang.reflect.Method.invokeNative(Native Method)

E/AndroidRuntime( 1017):         at java.lang.reflect.Method.invoke(Method.java:491)

E/AndroidRuntime( 1017):         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841)

E/AndroidRuntime( 1017):         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599)

E/AndroidRuntime( 1017):         at dalvik.system.NativeStart.main(Native Method)

W/ActivityManager(  143):   Force finishing activity com.example.android.BluetoothChat/.BluetoothChat

D/dalvikvm(  207): GC_CONCURRENT freed 505K, 8% free 6977K/7559K, paused 2ms+15ms

D/KeyboardEx(  207): KeyboardEx.finalize()

D/AlphaInputView(  207): AlphaInputView.finalize()

D/dalvikvm(  143): GC_FOR_ALLOC freed 1244K, 45% free 15836K/28295K, paused 58ms

E/JavaBinder(  143): Retiring DRL 0x2d6f80 with extant death recipients

E/JavaBinder(  143): Retiring DRL 0x209208 with extant death recipients

V/TLINE   (  143): new: android.text.TextLine@41d14a68

W/ActivityManager(  143): Activity pause timeout for ActivityRecord{40bda520 com.example.android.BluetoothChat/.BluetoothChat}

D/WindowManager(  143): readLidState, sw:1

D/WindowManager(  143): adjustConfigurationLw, config:{ scale=1.0 imsi=0/0 loc=null touch=3 keys=2/1/1 nav=1/1 orien=L layout=0x10000014 uiMode=0x0} mLidOpen:1 mHasDockFeature:true mHasHallSensorFeature:true config.hardKeyboardHidden:1

I/ActivityManager(  143): No longer want com.asus.UpdateLauncher (pid 651): hidden #16

W/InputConnectionWrapper.ICC(  207): Timed out waiting on IInputContextCallback

W/xt9input(  207): alpha_data::mdb::loadFile()...failed to convert  to unicode

W/InputConnectionWrapper.ICC(  207): Timed out waiting on IInputContextCallback

D/dalvikvm(  759): GC_EXPLICIT freed 276K, 8% free 7677K/8327K, paused 4ms+2ms

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:[Bluetooth] Ricerca dispositivi, attivazione, visibilità
« Risposta #10 il: 21 Giugno 2011, 19:03:59 CEST »
0
Il problema sembra essere quando viene chiamata la prima volta questa funzione:

Codice (Java): [Seleziona]
    private final void setStatus(CharSequence subTitle) {
        final ActionBar actionBar = getActionBar();
        actionBar.setSubtitle(subTitle);
    }

In questa parte dell'handler:

Codice (Java): [Seleziona]
    private final Handler mHandler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            switch (msg.what) {
            case MESSAGE_STATE_CHANGE:
                if(D) Log.i(TAG, "MESSAGE_STATE_CHANGE: " + msg.arg1);
                switch (msg.arg1) {
                case BluetoothChatService.STATE_CONNECTED:
                    setStatus(getString(R.string.title_connected_to, mConnectedDeviceName));
                    mConversationArrayAdapter.clear();
                    break;
                case BluetoothChatService.STATE_CONNECTING:
                    setStatus(R.string.title_connecting);
                    break;
                case BluetoothChatService.STATE_LISTEN:
                case BluetoothChatService.STATE_NONE:
                    setStatus(R.string.title_not_connected);
                    break;
                }

Se hai voglia, potresti provare a commentare/alterare un po' di righe.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline nikel90

  • Nuovo arrivato
  • *
  • Post: 11
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    eee pad transformer
  • Sistema operativo:
    3.1
Re:[Bluetooth] Ricerca dispositivi, attivazione, visibilità
« Risposta #11 il: 22 Giugno 2011, 18:16:30 CEST »
0
allora... dando un occhiata... ho visto che le funzioni setstatus.. sono appunto funzioni... e in quanto funzionI sono 2....

Codice (Java): [Seleziona]
private final void setStatus(int resId) {
        final ActionBar actionBar = getActionBar();
        actionBar.setTitle(resId);
    }

    private final void setStatus(CharSequence subTitle) {
        final ActionBar actionBar = getActionBar();
        actionBar.setSubtitle(subTitle);
    }

il codice gli passa una stringa... ma a logica e guardando logcat l'errore esce alla riga 233 che è proprio la funzione che accetta un intero come parametro...

presumo le 2 funzioni siano "overraid" se sono intesi così anche in java...
giusto?

nel caso avessi ragione.. come si risolve? basta un @override?