Java 我需要我的android蓝牙控制应用程序

Java 我需要我的android蓝牙控制应用程序,java,android,xml,android-layout,bluetooth,Java,Android,Xml,Android Layout,Bluetooth,我需要一些帮助我完成许可证项目。 我写了这段代码,并没有语法eror,但应用程序停止了。 下面添加了此代码和xml文件。我只想扫描附近的蓝牙设备并在listview上显示此设备 主要活动: public class MainActivity extends AppCompatActivity { private BluetoothAdapter btadapter; private ArrayAdapter<String>arrayAdapter; private ArrayList

我需要一些帮助我完成许可证项目。 我写了这段代码,并没有语法eror,但应用程序停止了。 下面添加了此代码和xml文件。我只想扫描附近的蓝牙设备并在listview上显示此设备

主要活动:

public class MainActivity extends AppCompatActivity
{
private BluetoothAdapter btadapter;
private ArrayAdapter<String>arrayAdapter;
private ArrayList<String> devicelist;
private ListView list;
private static final int BT_REQUEST_ENABLE =1;
private static final int BT_VISIABLE_ENABLE = 12 ;

@Override
protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
    setContentView(R.layout.activity_main);

    final CheckBox visibilitycontol = (CheckBox) findViewById(R.id.visibilitycontrol);
     ListView list             = (ListView) findViewById(R.id.listView);

    btadapter = BluetoothAdapter.getDefaultAdapter();

    IntentFilter filter = new IntentFilter(BluetoothDevice.ACTION_FOUND);
    registerReceiver(mReceiver, filter);

    // Bluetooth device control
    if ( btadapter == null)
    {Toast.makeText(getApplicationContext(),"Bluetooth Device Not Available",Toast.LENGTH_LONG).show();}

    // Bluetooth status check
    if ( !btadapter.isEnabled() )
    {   Toast.makeText(getApplicationContext(),"Please Turn On The Bluetooth Device",Toast.LENGTH_LONG).show();
        Intent bt_request_intent = new Intent((BluetoothAdapter.ACTION_REQUEST_ENABLE));
        startActivityForResult(bt_request_intent , BT_REQUEST_ENABLE);
    }
    else
    {Toast.makeText(getApplicationContext(),"Bluetooth Device Already Turned On",Toast.LENGTH_LONG).show();}


    // Bluetooth visibility control
    visibilitycontol.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener()
    {
        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
        {
            if ( visibilitycontol.isChecked() )
            {
                Intent discoverableIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);
                discoverableIntent.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 120);
                startActivityForResult(discoverableIntent , BT_VISIABLE_ENABLE);}
        }
    });
}

// discovering new device
public final BroadcastReceiver mReceiver = new BroadcastReceiver()
{
    public void onReceive(Context context, Intent intent)
    {
        String action = intent.getAction();

        if (BluetoothDevice.ACTION_FOUND.equals(action))
        {
            Toast.makeText(getApplicationContext(),"DEVICE FOUND",Toast.LENGTH_LONG).show();
            BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);

            String devicename = device.getName();
            String deviceadress = device.getAddress();

            ArrayList<String> devicelist = new ArrayList<String>();
            ArrayList<BluetoothDevice>btdevicelist = new ArrayList<BluetoothDevice>();

            btdevicelist.add(device);
            devicelist.add(devicename+"\n"+deviceadress);

            list.setAdapter(arrayAdapter);
            list.refreshDrawableState();


        }

    }
};

// Scan button code
public void scan(View view)
{
    if(btadapter.isDiscovering()) {btadapter.cancelDiscovery();}
    Toast.makeText(getApplicationContext(), "Searching for devices...", Toast.LENGTH_LONG).show();
    arrayAdapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,devicelist);
    btadapter.startDiscovery();

}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
    super.onActivityResult(requestCode, resultCode, data);

    if( requestCode == BT_REQUEST_ENABLE )
    {
        if(resultCode == RESULT_OK)
        {
            Toast.makeText(getApplicationContext(), "Bluetooth Device Is Turning On", Toast.LENGTH_LONG).show();
        }
        if ( resultCode == RESULT_CANCELED)
        {finish();}

    }

    if( requestCode == BT_VISIABLE_ENABLE)
    {
        if (resultCode == 120)
        {Toast.makeText(getApplicationContext(), "Now Device Visiable For a 120 seconds!", Toast.LENGTH_LONG).show();}

        else {Toast.makeText(getApplicationContext(), "Please Give The Visibility Permission", Toast.LENGTH_LONG).show(); }
    }

}

@Override
protected void onDestroy()
{super.onDestroy(); unregisterReceiver(mReceiver);}

原因:java.lang.NullPointerException
这永远都不好!在以后的问题中,尽量写一个明确的主题,这将有助于其他用户解决同样的问题。正如我前面提到的,我只希望扫描附近的蓝牙设备并在listview上显示此设备,我可以尝试此代码至少打开一个蓝牙设备并可访问我确信这是主要问题:listAdapter为什么为空或新发现设备为什么导入我正在查找的阵列列表这个问题的答案
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.fatih.bluetoothcontrol.MainActivity">

<TextView
    android:text="Bluetooth Control Application"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="12dp"
    android:id="@+id/textView2" />

<CheckBox
    android:text="Make This Device Visiable"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/visibilitycontrol"
    android:layout_below="@+id/textView2"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="27dp" />

<TextView
    android:text="00:00"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/counter"
    android:layout_alignBaseline="@+id/textView3"
    android:layout_alignBottom="@+id/textView3"
    android:layout_marginStart="260dp" />

<TextView
    android:text="Remaining Time for Visibility"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="16dp"
    android:id="@+id/textView3"
    android:layout_marginEnd="21dp"
    android:layout_below="@+id/visibilitycontrol"
    android:layout_alignEnd="@+id/textView2" />

<ListView
    android:layout_width="200dp"
    android:layout_height="100dp"
    android:layout_below="@+id/textView3"
    android:layout_alignParentStart="true"
    android:layout_marginTop="54dp"
    android:background="@android:drawable/editbox_dropdown_light_frame"
    android:id="@+id/listView" />

<Button
    android:text="Control Menu"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/controlmenu"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="300dp" />

<Button
    android:text="scan"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignTop="@+id/listView"
    android:layout_alignStart="@+id/counter"
    android:id="@+id/scan"
    android:elevation="0dp"
    android:onClick="scan" />


<Button
    android:text=" connect"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/connect"
    android:layout_below="@+id/scan"
    android:layout_alignParentEnd="true"
     />
 E/AndroidRuntime: FATAL EXCEPTION: main
              Process: com.example.fatih.bluetoothcontrol, PID: 16078
              java.lang.RuntimeException: Error receiving broadcast Intent { act=android.bluetooth.device.action.FOUND flg=0x10 (has extras) } in com.example.fatih.bluetoothcontrol.MainActivity$2@32531784
                  at android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:933)
                  at android.os.Handler.handleCallback(Handler.java:739)
                  at android.os.Handler.dispatchMessage(Handler.java:95)
                  at android.os.Looper.loop(Looper.java:145)
                  at android.app.ActivityThread.main(ActivityThread.java:5942)
                  at java.lang.reflect.Method.invoke(Native Method)
                  at java.lang.reflect.Method.invoke(Method.java:372)
                  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1400)
                  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1195)
               Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.ListView.setAdapter(android.widget.ListAdapter)' on a null object reference
                  at com.example.fatih.bluetoothcontrol.MainActivity$2.onReceive(MainActivity.java:97)
                  at android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:923)
                  at android.os.Handler.handleCallback(Handler.java:739) 
                  at android.os.Handler.dispatchMessage(Handler.java:95) 
                  at android.os.Looper.loop(Looper.java:145) 
                  at android.app.ActivityThread.main(ActivityThread.java:5942) 
                  at java.lang.reflect.Method.invoke(Native Method) 
                  at java.lang.reflect.Method.invoke(Method.java:372) 
                  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1400) 
                  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1195)