سلام دوستان.


من دارم رو برنامه ای کار می کنم که تو قسمتی از اون نیاز دارم توسط بلوتوث دستگاه های دیگرو پیدا کنم, به این صورت که وقتی از منوی برنامه وارد اکتیویتی مورد نظر میشم اول وضعیت بلوتوث رو چک می کنه که روشنه یا نه و در اون اکتیویتی دکمه ای گذاشتم که اگر روش کلیک شد لیست دستگاه های دیگرو نشون بده. . کد های زیادی رو امتحان کردم تا به یه کد نسبتا قابل فهم تر رسیدم. زمانی که برنامم رو با این کد توی گوشیم اجرا میکنم بخش بررسی وضعیت بلوتوث و روشن کردن آن توسط برنامه به درستی کار میکنه اما زمانی که روی دکمه کلیک می کنم تا لیست دستگاه های دیگرو نشون بده خطا میده و از برنامه میاد بیرون و چون نمیتونم برنامم رو روی امولاتور اجرا کنم نمیتونم بفهمم مشکل از کجاست. می خواستم ببینم کسی از دوستان می تونه به من کمک کنه یا نه. ممنون




public class BluetoothDevicesActivity extends Activity{



private ListView lv1;
private ArrayAdapter< String> adapter;
private BluetoothAdapter BA;
private final static int REQUEST_ENABLE_BLUETOOTH = 1;
private Button ScanBtn;


@Override
protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);
setContentView(R.layout.activity_bluetooth_devices );
ScanBtn=(Button)findViewById(R.id.btn_scan);

lv1= (ListView) findViewById(R.id.lst_bluetooth);
adapter=new ArrayAdapter<String>(BluetoothDevicesActivity.this ,
android.R.layout.simple_list_item_1);

BA = BluetoothAdapter.getDefaultAdapter();
lv1.setAdapter(adapter);
findBluetoothState();
ScanBtn.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View arg0) {
adapter.clear();
BA.startDiscovery();

}
});

//adapter.clear();
//BA.startDiscovery();
registerReceiver(BR,new IntentFilter(BluetoothDevice.ACTION_FOUND));
}

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

if(requestCode==REQUEST_ENABLE_BLUETOOTH)
{
findBluetoothState();
}
}


private void findBluetoothState() {

if(BA==null)
{
Toast.makeText(getApplicationContext(), "Bluetooth service not available in the device", Toast.LENGTH_LONG).show();

}
else
{
if(BA.isEnabled())
{
if(BA.isDiscovering())
{

Toast.makeText(getApplicationContext(), "Finding Devices", Toast.LENGTH_LONG).show();
}
else
{

Toast.makeText(getApplicationContext(), "Bluetooth is Enabled", Toast.LENGTH_LONG).show();
}
}
else
{

Toast.makeText(getApplicationContext(), "Bluetooth is not enabled", Toast.LENGTH_LONG).show();
Intent startBT=new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivityForResult(startBT,REQUEST_ENABLE_BLUE TOOTH);
}
}

}
private final BroadcastReceiver BR=new BroadcastReceiver(){
@Override
public void onReceive(Context context, Intent intent) {
String act=intent.getAction();
if(BluetoothDevice.ACTION_FOUND.equals(act)){
BluetoothDevice device=intent.getParcelableExtra(BluetoothDevice.E XTRA_DEVICE);
adapter.add(device.getName()+" - "+device.getAddress());
adapter.notifyDataSetChanged();
}
}
};
}