andriod 블루투스 개발의 블루투스 검색

블루투스 검색은 방송을 통해 이루어진다.키 코드는 다음과 같습니다.
1. 블루투스 발견을 위한 방송 수용자
/**
	 *    
	 *             
	 */
	private BroadcastReceiver _foundReceiver = new BroadcastReceiver() {
		public void onReceive(Context context, Intent intent) {
			
			BluetoothDevice device = intent
					.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
			//          
			_devices.add(device);
			DeviceInfo info=new DeviceInfo();
			info.setmDeviceName(device.getName());
			info.setmDeviceMacAddr(device.getAddress());
			infos.add(info);
			info=null;
			//      
			showDevices();
		}
	};
private BroadcastReceiver _discoveryReceiver = new BroadcastReceiver() {

		@Override
		public void onReceive(Context context, Intent intent) 
		{
			//          
			unregisterReceiver(_foundReceiver);
			unregisterReceiver(this);
			_discoveryFinished = true;
		}
	};

2、블루투스 어댑터 획득
_bluetooth=BluetoothAdapter.getDefaultAdapter();
		//          
		if(_bluetooth==null){
			Toast.makeText(getApplicationContext(),"         ", 300).show();
			return;
		}
		//        
		if(!_bluetooth.isEnabled()){
			//      
			Intent intent=new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
			 //        ,  300       
		   // intent.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 300); 
		  
		    
			startActivity(intent);

3. 등록 수신기
//      
		IntentFilter discoveryFilter = new IntentFilter(BluetoothAdapter.ACTION_DISCOVERY_FINISHED);
		registerReceiver(_discoveryReceiver, discoveryFilter);
		IntentFilter foundFilter = new IntentFilter(BluetoothDevice.ACTION_FOUND);
		registerReceiver(_foundReceiver, foundFilter);
		//        ,         
		SamplesUtils.indeterminate(DiscoveryActivity.this, _handler, "       ...", _discoveryWorkder, new OnDismissListener() {
			public void onDismiss(DialogInterface dialog)
			{

				for (; _bluetooth.isDiscovering();)
				{

					_bluetooth.cancelDiscovery();
				}

				_discoveryFinished = true;
			}
		}, false);
	if (list.indexOf(s) == -1) {//     
				list.add(s);

도구 클래스는 다음과 같습니다.
class SamplesUtils
{
	public static void indeterminate(Context context, Handler handler, String message, final Runnable runnable, OnDismissListener dismissListener)
	{
		try
		{

			indeterminateInternal(context, handler, message, runnable, dismissListener, true);
		}
		catch (Exception e)
		{

			; // nop.
		}
	}


	public static void indeterminate(Context context, Handler handler, String message, final Runnable runnable, OnDismissListener dismissListener,
		boolean cancelable)
	{

		try
		{

			indeterminateInternal(context, handler, message, runnable, dismissListener, cancelable);
		}
		catch (Exception e)
		{

			; // nop.
		}
	}

	private static ProgressDialog createProgressDialog(Context context, String message)
	{

		ProgressDialog dialog = new ProgressDialog(context);
		dialog.setIndeterminate(false);
		dialog.setMessage(message);

		return dialog;
	}


	private static void indeterminateInternal(Context context, final Handler handler, String message, final Runnable runnable,
		OnDismissListener dismissListener, boolean cancelable)
	{

		final ProgressDialog dialog = createProgressDialog(context, message);
		dialog.setCancelable(cancelable);

		if (dismissListener != null)
		{

			dialog.setOnDismissListener(dismissListener);
		}

		dialog.show();

		new Thread() {

			@Override
			public void run()
			{
				runnable.run();

				handler.post(new Runnable() {

					public void run()
					{

						try
						{

							dialog.dismiss();
						}
						catch (Exception e)
						{

							; // nop.
						}

					}
				});
			};
		}.start();
	}
}

좋은 웹페이지 즐겨찾기