1

Я не знаю, что с ним не так, но мое приложение ищет соседние устройства Bluetooth, но в тот момент, когда я пытаюсь подключиться к одному из этих устройств Bluetooth, сбой приложений.Устройство Bluetooth, не подключающееся к Android-приложению, несмотря на попытки обучения

Пожалуйста посмотреть

Это мой SearchBTDevice.java. Это деятельность, которая называет ConnectBTDevice Активность в

package vertex2016.mvjce.edu.bluealert; 

import android.bluetooth.BluetoothDevice; 
import android.bluetooth.BluetoothGattDescriptor; 
import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 
import android.content.IntentFilter; 
import android.content.pm.ActivityInfo; 
import android.os.Bundle; 
import android.bluetooth.BluetoothAdapter; 
import android.provider.Settings; 
import android.support.design.widget.FloatingActionButton; 
import android.support.design.widget.Snackbar; 
import android.support.v7.app.AppCompatActivity; 
import android.support.v7.widget.Toolbar; 
import android.util.AttributeSet; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.AdapterView; 
import android.widget.ArrayAdapter; 
import android.widget.ListView; 
import android.widget.Toast; 

import java.util.Set; 

public class SearchBTDevice extends AppCompatActivity { 

    public BluetoothAdapter BlueAdapter = BluetoothAdapter.getDefaultAdapter(); 
    public ArrayAdapter PairedArrayAdapter; 
    public ArrayAdapter BTArrayAdapter; 
    BluetoothDevice btd; 

    public ListView devicesFound; 


    private final BroadcastReceiver BTReceiver= new BroadcastReceiver(){ 

     public void onReceive(Context context, Intent intent) 
     { 
      String action = intent.getAction(); 

      if (BluetoothDevice.ACTION_FOUND.equals(action)) { 
        btd = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE); 

        BTArrayAdapter.add(btd.getName() + "\t" + btd.getAddress() + "\n"); 

       } 
      } 

    }; 

    IntentFilter filter1 = new IntentFilter(BluetoothDevice.ACTION_FOUND); 




    @Override 
    protected void onResume() { 
     super.onResume(); 
     this.registerReceiver(BTReceiver,filter1); 



    } 

    @Override 
    protected void onPause() { 
     super.onPause(); 
     BlueAdapter.cancelDiscovery(); 
     this.unregisterReceiver(BTReceiver); 
     Toast.makeText(SearchBTDevice.this, "Discovery Stopped!!", Toast.LENGTH_SHORT).show(); 
    } 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_search_btdevice); 
     Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 
     getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
     setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LOCKED); 




     searchBTDevices(); 


    } 


    public void searchBTDevices() 
    { 
     if(!BlueAdapter.startDiscovery()) 
      Toast.makeText(SearchBTDevice.this, "Failed to Start Discovery", Toast.LENGTH_SHORT).show(); 
     else 
      Toast.makeText(SearchBTDevice.this, "Discovery Startred", Toast.LENGTH_SHORT).show(); 
     BTArrayAdapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1); 
     devicesFound = (ListView)findViewById(R.id.searchpagelistView); 
     devicesFound.setAdapter(BTArrayAdapter); 
     devicesFound.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
       Intent connectedBTintent = new Intent(SearchBTDevice.this, ConnectedBTDevice.class); 
       connectedBTintent.putExtra("BluetoothDevice", btd); 
       startActivity(connectedBTintent); 

      } 
     }); 

    } 


} 

Это мой ОбновленоConnectBTDevice.java, который пытается сделать установить канал RFCOMM. Но это то, где мое приложение падает.

package vertex2016.mvjce.edu.bluealert; 

import android.bluetooth.BluetoothAdapter; 
import android.bluetooth.BluetoothDevice; 
import android.bluetooth.BluetoothSocket; 
import android.content.pm.ActivityInfo; 
import android.os.Bundle; 
import android.support.design.widget.FloatingActionButton; 
import android.support.design.widget.Snackbar; 
import android.support.v7.app.AppCompatActivity; 
import android.support.v7.widget.Toolbar; 
import android.view.View; 
import android.widget.ArrayAdapter; 
import android.widget.ListView; 

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

public class ConnectedBTDevice extends AppCompatActivity { 

    public BluetoothDevice btd; 
    public BluetoothSocket btSocket, tempSocket; 
    private UUID myUUID; 
    ArrayAdapter arr; 
    ListView lv; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_connected_btdevice); 
     Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 
     getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
     setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LOCKED); 


     arr = new ArrayAdapter(this, android.R.layout.simple_list_item_2); 

     btd = getIntent().getParcelableExtra("BluetoothDevice"); 

     connectBT(); 
     displayStuff(); 

    } 

    public void connectBT() { 
     Thread myThread = new Thread() { 

      public void run() { 
       tempSocket = null; 

       try { 
        tempSocket = btd.createRfcommSocketToServiceRecord(myUUID); 
       } catch (IOException e) { 
        e.printStackTrace(); 
       } 

       BluetoothAdapter.getDefaultAdapter().cancelDiscovery(); 

       try { 
        btSocket.connect(); 
        arr.add("CONNECTED TO-->" + btd.getName()); 
       } catch (IOException e) { 
        e.printStackTrace(); 
        try { 
         btSocket.close(); 
        } catch (IOException e1) { 
         e1.printStackTrace(); 
        } 
       } 
      } 

     }; 
     myThread.start(); 
    } 




    public void displayStuff() 
    { 
     lv = (ListView)findViewById(R.id.connectedBTlistView); 
     lv.setAdapter(arr); 
    } 

} 

Это то, что мой ОбновленоLogCat показывает

03-22 01:40:47.116 28214-11199/vertex2016.mvjce.edu.bluealert E/AndroidRuntime: FATAL EXCEPTION: Thread-11810 
                       Process: vertex2016.mvjce.edu.bluealert, PID: 28214 
                       java.lang.NullPointerException: Attempt to invoke virtual method 'void android.bluetooth.BluetoothSocket.connect()' on a null object reference 
                        at vertex2016.mvjce.edu.bluealert.ConnectedBTDevice$1.run(ConnectedBTDevice.java:61) 

+0

вы можете показать свою подключенную активность.java – Calvin

+0

@Calvin Это уже указано. Посмотрите ** ConnectedBTDevice.java ** – Auro

ответ

0

Исключение в LogCat говорит вам, что вопрос. Вы пытаетесь вызвать BluetoothSocket.connect() по ссылке нулевого объекта.

Вы вызываете btSocket.connect(), но btSocket никогда не был инициализирован и поэтому имеет значение null.

Либо позвоните tempSocket.connect(), либо назначьте tempSocket до btSocket перед вами connect().

 Смежные вопросы

  • Нет связанных вопросов^_^