在Android Activity中运行程序序列

时间:2016-01-13 05:53:59

标签: android bluetooth

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消息。 有人请解释一下。

0 个答案:

没有答案