package com.example.led_control;
import java.util.Set;
import android.app.Activity;
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.widget.Toast;
public class MainActivity extends Activity {
private BluetoothAdapter adapter;
private Set<BluetoothDevice> pairedDevices;
private BluetoothDevice device;
static int flag=0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
adapter = BluetoothAdapter.getDefaultAdapter();
if (adapter == null)
{
Toast.makeText(this, "Bluetooth is not supported",
Toast.LENGTH_SHORT).show();
finish();
}
else
{
if (adapter.isEnabled())
{
}
else
{
Intent turnBTon = new Intent(
BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivityForResult(turnBTon, 1);
}
}
setRequiredDevice();
}
private void setRequiredDevice() {
pairedDevices = adapter.getBondedDevices();
for(BluetoothDevice d : pairedDevices)
{
if(d.getName().equalsIgnoreCase("HC-06"))
{
device = d;
flag=1;
break;
}
}
if(flag==0)
{
Toast.makeText(this, "Required Device is not paired",
Toast.LENGTH_SHORT).show();
}
else
{
Intent intent = new Intent(MainActivity.this, UI.class);
intent.putExtra("address", device.getAddress());
startActivity(intent);
}
}
}
我的问题是:我在仿真器上运行此代码并不支持蓝牙。所以这个活动应该在第一个条件下完成
if(adapter == null)
因为在if块中调用了finish()方法。但是当我运行它时,我在调用setRequiredDevice()方法的行上得到了NullPointerException。
我无法理解代码是如何达到该行的,因为它应该在if块中完成,因为模拟器不支持蓝牙。
但是如果我删除了行setRquiredDevice(),那么活动就会显示Toast消息。 有人请解释一下。