如何在 Android 中以编程方式连接已配对的蓝牙设备?
我正在开发一个应用程序,我必须连接到蓝牙配对设备。这两个设备相互配对。现在,当我尝试连接配对设备时,它卡在连接模式对话框中。日志显示它已成功连接,但不会关闭该对话框。
这是我的代码片段。
Main.java
import java.io.BufferedReader;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Random;
import java.util.Set;
import java.util.TimeZone;
import java.util.UUID;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.app.Dialog;
import android.app.ProgressDialog;
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
import android.bluetooth.BluetoothSocket;
import android.content.Context;
import android.content.DialogInterface;
import android.content.DialogInterface.OnCancelListener;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.res.Configuration;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.ColorMatrix;
import android.graphics.ColorMatrixColorFilter;
import android.graphics.PorterDuff.Mode;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.os.Environment;
import android.preference.PreferenceManager;
import android.provider.Settings;
import android.util.Log;
import android.view.KeyEvent;
import android.view.MotionEvent;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.view.View.OnTouchListener;
import android.view.inputmethod.InputMethodManager;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
public class Main extends Activity
{
protected static final String TAG = "TAG";
private static final int REQUEST_CONNECT_DEVICE = 1;
private static final int REQUEST_ENABLE_BT = 2;
Button mScan;
BluetoothAdapter mBluetoothAdapter;
private UUID applicationUUID = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");
@Override
public void onCreate(Bundle mSavedInstanceState)
{
super.onCreate(mSavedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.main);
mScan = (Button) findViewById(R.id.Scan);
mScan.setOnClickListener(new View.OnClickListener()
{
public void onClick(View mView)
{
mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
if (mBluetoothAdapter == null)
{
Toast.makeText(Main.this, "DeviceHasNoSupport", 2000).show();
}
else
{
if (!mBluetoothAdapter.isEnabled())
{
Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT);
}
else
{
ListPairedDevices();
Intent connectIntent = new Intent(Main.this, DeviceListActivity.class);
startActivityForResult(connectIntent, REQUEST_CONNECT_DEVICE);
}
}
}
});
}// onCreate
public void onActivityResult(int mRequestCode, int mResultCode, Intent mDataIntent)
{
super.onActivityResult(mRequestCode, mResultCode, mDataIntent);
switch (mRequestCode)
{
case REQUEST_CONNECT_DEVICE:
if (mResultCode == Activity.RESULT_OK)
{
Bundle mExtra = mDataIntent.getExtras();
String mDeviceAddress = mExtra.getString("DeviceAddress");
Log.v(TAG, "Coming incoming address " + mDeviceAddress);
BluetoothDevice mBluetoothDevice = mBluetoothAdapter.getRemoteDevice(mDeviceAddress);
pairToDevice(mBluetoothDevice);
Log.v(TAG, "pairToDeviceCalled");
}
break;
case REQUEST_ENABLE_BT:
if (mResultCode == Activity.RESULT_OK)
{
ListPairedDevices();
Intent connectIntent = new Intent(Main.this, DeviceListActivity.class);
startActivityForResult(connectIntent, REQUEST_CONNECT_DEVICE);
}
else
{
Toast.makeText(Main.this, "BTNotEnabled", 2000).show();
}
break;
}
}
private void ListPairedDevices()
{
Set<BluetoothDevice> mPairedDevices = mBluetoothAdapter.getBondedDevices();
if (mPairedDevices.size() > 0)
{
for (BluetoothDevice mDevice : mPairedDevices)
{
Log.v(TAG, "PairedDevices: " + mDevice.getName() + " " + mDevice.getAddress());
}
}
}
private void pairToDevice(BluetoothDevice nBluetoothDevice)
{
Log.v(TAG, "InsidepairToDeviceCalled");
openSocket(nBluetoothDevice);
Log.v(TAG, "LeavingpairToDeviceCalled");
}
private void openSocket(BluetoothDevice nBluetoothDevice)
{
try
{
Log.v(TAG, "InsideOpenSockedCalled");
final ProgressDialog dialog = new ProgressDialog(this);
final ConnectRunnable connector = new ConnectRunnable(nBluetoothDevice, dialog);
Log.v(TAG, "InsideOpenSockedConnecterCalled");
ProgressDialog.show(this, "Connecting...", nBluetoothDevice.getName() + " : " + nBluetoothDevice.getAddress(),
true, true,
new OnCancelListener()
{
public void onCancel(DialogInterface dialog)
{
connector.cancel();
}
});
new Thread(connector).start();
}
catch (IOException ex)
{
Log.d(TAG, "Could not open bluetooth socket", ex);
}
}
private class ConnectRunnable implements Runnable
{
private final ProgressDialog dialog;
private final BluetoothSocket socket;
public ConnectRunnable(BluetoothDevice device, ProgressDialog dialog) throws IOException
{
socket = device.createRfcommSocketToServiceRecord(applicationUUID);
this.dialog = dialog;
}
public void run()
{
try
{
Log.v(TAG, "InsideRunnableCalled");
mBluetoothAdapter.cancelDiscovery();
socket.connect();
Log.v(TAG, "InsideRunnableSocketConnectCalled");
}
catch (IOException connectException)
{
Log.d(TAG, "Could not connect to socket", connectException);
closeSocket(socket);
return;
}
Log.v(TAG, "Connected");
dismissDialog(dialog);
closeSocket(socket);
}
public void cancel()
{
try
{
socket.close();
}
catch (IOException e)
{
Log.d(TAG, "Canceled connection", e);
}
}
}
private void dismissDialog(final Dialog dialog)
{
runOnUiThread(new Runnable()
{
public void run()
{
dialog.dismiss();
Log.v(TAG, "DialogClosed");
}
});
}
private void closeSocket(BluetoothSocket nOpenSocket)
{
try
{
nOpenSocket.close();
Log.v(TAG, "SockectClosed");
}
catch (IOException ex)
{
Log.d(TAG, "Could not close exisiting socket", ex);
}
}
@Override
public boolean onKeyDown(int mKeyCode, KeyEvent mKeyEvent)
{
if ((!(android.os.Build.VERSION.SDK_INT > android.os.Build.VERSION_CODES.DONUT)
&& mKeyCode == KeyEvent.KEYCODE_BACK && mKeyEvent.getRepeatCount() == 0))
{
onBackPressed();
}
return super.onKeyDown(mKeyCode, mKeyEvent);
}
public void onBackPressed()
{
finish();
}
}
DeviceListActivity.java
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.view.View;
import android.view.Window;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.AdapterView.OnItemClickListener;
public class DeviceListActivity extends Activity
{
protected static final String TAG = "TAG";
private BluetoothAdapter mBluetoothAdapter;
private ArrayAdapter<String> mPairedDevicesArrayAdapter;
@Override
protected void onCreate(Bundle mSavedInstanceState)
{
super.onCreate(mSavedInstanceState);
requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
setContentView(R.layout.device_list);
setResult(Activity.RESULT_CANCELED);
mPairedDevicesArrayAdapter = new ArrayAdapter<String>(this, R.layout.device_name);
ListView mPairedListView = (ListView) findViewById(R.id.paired_devices);
mPairedListView.setAdapter(mPairedDevicesArrayAdapter);
mPairedListView.setOnItemClickListener(mDeviceClickListener);
mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
Set<BluetoothDevice> mPairedDevices = mBluetoothAdapter.getBondedDevices();
if (mPairedDevices.size() > 0)
{
findViewById(R.id.title_paired_devices).setVisibility(View.VISIBLE);
for (BluetoothDevice mDevice : mPairedDevices)
{
mPairedDevicesArrayAdapter.add(mDevice.getName() + "\n" + mDevice.getAddress());
}
}
else
{
String mNoDevices = getResources().getText(R.string.none_paired).toString();
mPairedDevicesArrayAdapter.add(mNoDevices);
}
}
@Override
protected void onDestroy()
{
super.onDestroy();
if (mBluetoothAdapter != null)
{
mBluetoothAdapter.cancelDiscovery();
}
}
private OnItemClickListener mDeviceClickListener = new OnItemClickListener()
{
public void onItemClick(AdapterView<?> mAdapterView, View mView, int mPosition, long mLong)
{
mBluetoothAdapter.cancelDiscovery();
String mDeviceInfo = ((TextView) mView).getText().toString();
String mDeviceAddress = mDeviceInfo.substring(mDeviceInfo.length() - 17);
Log.v(TAG, "Device_Address " + mDeviceAddress);
Bundle mBundle = new Bundle();
mBundle.putString("DeviceAddress", mDeviceAddress);
Intent mBackIntent = new Intent();
mBackIntent.putExtras(mBundle);
setResult(Activity.RESULT_OK, mBackIntent);
finish();
}
};
}
Android Manifest
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.androidvouge.bluetooth" android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/name"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen">
<activity android:name=".Main" android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".DeviceListActivity" android:theme="@android:style/Theme.Dialog"
android:configChanges="orientation|keyboardHidden"
android:screenOrientation="portrait" />
</application>
<uses-sdk android:minSdkVersion="7" android:targetSdkVersion="11" />
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<supports-screens android:smallScreens="false"
android:normalScreens="true" android:largeScreens="true" />
</manifest>
device_list.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView android:id="@+id/title_paired_devices"
android:layout_width="fill_parent" android:layout_height="wrap_content"
android:text="@string/title_paired_devices" android:visibility="gone"
android:background="#666" android:textColor="#fff"
android:paddingLeft="5dip" />
<ListView android:id="@+id/paired_devices"
android:layout_width="fill_parent" android:layout_height="wrap_content"
android:stackFromBottom="true" android:layout_weight="1" />
</LinearLayout>
device_name.xml
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" android:layout_height="wrap_content"
android:textSize="18sp" android:padding="5dip" />
main.xml 只有按钮。
这是 logcat 输出。
06-16 13:46:08.640 19062 19062 E CachedBluetoothDevice: updating profiles for $ $ S A \/ A N $ $
06-16 13:46:08.640 19062 19062 V CachedBluetoothDevice: opp classbits != uuid
06-16 13:46:08.640 19062 19062 V CachedBluetoothDevice: Class: 5a0204
06-16 13:46:08.640 19062 19062 V CachedBluetoothDevice: UUID:
06-16 13:46:08.640 19062 19062 V CachedBluetoothDevice: 00001101-0000-1000-8000-00805f9b34fb
06-16 13:46:08.667 19091 19091 V TAG : PairedDevices: $ $ S A \/ A N $ $ 00:1D:3B:05:B4:D5
06-16 13:46:10.582 19091 19091 V TAG : Device_Address 00:1D:3B:05:B4:D5
06-16 13:46:10.597 19091 19091 V TAG : Coming incoming address 00:1D:3B:05:B4:D5
06-16 13:46:10.597 19091 19091 V TAG : InsidepairToDeviceCalled
06-16 13:46:10.597 19091 19091 V TAG : InsideOpenSockedCalled
06-16 13:46:10.718 19091 19091 V TAG : InsideOpenSockedConnecterCalled
06-16 13:46:10.789 19091 19091 V TAG : LeavingpairToDeviceCalled
06-16 13:46:10.789 19091 19091 V TAG : pairToDeviceCalled
06-16 13:46:10.800 19091 19128 V TAG : InsideRunnableCalled
06-16 13:46:13.730 19091 19128 V TAG : InsideRunnableSocketConnectCalled
06-16 13:46:13.730 19091 19128 V TAG : Connected
06-16 13:46:13.730 19091 19128 V TAG : SockectClosed
06-16 13:46:13.734 19091 19091 V TAG : DialogClosed
哪里出了问题?任何已经成功配置蓝牙与处理对话框的人,请帮帮我。
I am developing an application where I have to connect to Bluetooth paired device. These two devices are paired with each other. Now when I try to connect with paired device it stuck with the connecting mode dialog. Log shows that it successfully connect but does not dismiss the dialog.
Here is my code snippet.
Main.java
import java.io.BufferedReader;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Random;
import java.util.Set;
import java.util.TimeZone;
import java.util.UUID;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.app.Dialog;
import android.app.ProgressDialog;
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
import android.bluetooth.BluetoothSocket;
import android.content.Context;
import android.content.DialogInterface;
import android.content.DialogInterface.OnCancelListener;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.res.Configuration;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.ColorMatrix;
import android.graphics.ColorMatrixColorFilter;
import android.graphics.PorterDuff.Mode;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.os.Environment;
import android.preference.PreferenceManager;
import android.provider.Settings;
import android.util.Log;
import android.view.KeyEvent;
import android.view.MotionEvent;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.view.View.OnTouchListener;
import android.view.inputmethod.InputMethodManager;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
public class Main extends Activity
{
protected static final String TAG = "TAG";
private static final int REQUEST_CONNECT_DEVICE = 1;
private static final int REQUEST_ENABLE_BT = 2;
Button mScan;
BluetoothAdapter mBluetoothAdapter;
private UUID applicationUUID = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");
@Override
public void onCreate(Bundle mSavedInstanceState)
{
super.onCreate(mSavedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.main);
mScan = (Button) findViewById(R.id.Scan);
mScan.setOnClickListener(new View.OnClickListener()
{
public void onClick(View mView)
{
mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
if (mBluetoothAdapter == null)
{
Toast.makeText(Main.this, "DeviceHasNoSupport", 2000).show();
}
else
{
if (!mBluetoothAdapter.isEnabled())
{
Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT);
}
else
{
ListPairedDevices();
Intent connectIntent = new Intent(Main.this, DeviceListActivity.class);
startActivityForResult(connectIntent, REQUEST_CONNECT_DEVICE);
}
}
}
});
}// onCreate
public void onActivityResult(int mRequestCode, int mResultCode, Intent mDataIntent)
{
super.onActivityResult(mRequestCode, mResultCode, mDataIntent);
switch (mRequestCode)
{
case REQUEST_CONNECT_DEVICE:
if (mResultCode == Activity.RESULT_OK)
{
Bundle mExtra = mDataIntent.getExtras();
String mDeviceAddress = mExtra.getString("DeviceAddress");
Log.v(TAG, "Coming incoming address " + mDeviceAddress);
BluetoothDevice mBluetoothDevice = mBluetoothAdapter.getRemoteDevice(mDeviceAddress);
pairToDevice(mBluetoothDevice);
Log.v(TAG, "pairToDeviceCalled");
}
break;
case REQUEST_ENABLE_BT:
if (mResultCode == Activity.RESULT_OK)
{
ListPairedDevices();
Intent connectIntent = new Intent(Main.this, DeviceListActivity.class);
startActivityForResult(connectIntent, REQUEST_CONNECT_DEVICE);
}
else
{
Toast.makeText(Main.this, "BTNotEnabled", 2000).show();
}
break;
}
}
private void ListPairedDevices()
{
Set<BluetoothDevice> mPairedDevices = mBluetoothAdapter.getBondedDevices();
if (mPairedDevices.size() > 0)
{
for (BluetoothDevice mDevice : mPairedDevices)
{
Log.v(TAG, "PairedDevices: " + mDevice.getName() + " " + mDevice.getAddress());
}
}
}
private void pairToDevice(BluetoothDevice nBluetoothDevice)
{
Log.v(TAG, "InsidepairToDeviceCalled");
openSocket(nBluetoothDevice);
Log.v(TAG, "LeavingpairToDeviceCalled");
}
private void openSocket(BluetoothDevice nBluetoothDevice)
{
try
{
Log.v(TAG, "InsideOpenSockedCalled");
final ProgressDialog dialog = new ProgressDialog(this);
final ConnectRunnable connector = new ConnectRunnable(nBluetoothDevice, dialog);
Log.v(TAG, "InsideOpenSockedConnecterCalled");
ProgressDialog.show(this, "Connecting...", nBluetoothDevice.getName() + " : " + nBluetoothDevice.getAddress(),
true, true,
new OnCancelListener()
{
public void onCancel(DialogInterface dialog)
{
connector.cancel();
}
});
new Thread(connector).start();
}
catch (IOException ex)
{
Log.d(TAG, "Could not open bluetooth socket", ex);
}
}
private class ConnectRunnable implements Runnable
{
private final ProgressDialog dialog;
private final BluetoothSocket socket;
public ConnectRunnable(BluetoothDevice device, ProgressDialog dialog) throws IOException
{
socket = device.createRfcommSocketToServiceRecord(applicationUUID);
this.dialog = dialog;
}
public void run()
{
try
{
Log.v(TAG, "InsideRunnableCalled");
mBluetoothAdapter.cancelDiscovery();
socket.connect();
Log.v(TAG, "InsideRunnableSocketConnectCalled");
}
catch (IOException connectException)
{
Log.d(TAG, "Could not connect to socket", connectException);
closeSocket(socket);
return;
}
Log.v(TAG, "Connected");
dismissDialog(dialog);
closeSocket(socket);
}
public void cancel()
{
try
{
socket.close();
}
catch (IOException e)
{
Log.d(TAG, "Canceled connection", e);
}
}
}
private void dismissDialog(final Dialog dialog)
{
runOnUiThread(new Runnable()
{
public void run()
{
dialog.dismiss();
Log.v(TAG, "DialogClosed");
}
});
}
private void closeSocket(BluetoothSocket nOpenSocket)
{
try
{
nOpenSocket.close();
Log.v(TAG, "SockectClosed");
}
catch (IOException ex)
{
Log.d(TAG, "Could not close exisiting socket", ex);
}
}
@Override
public boolean onKeyDown(int mKeyCode, KeyEvent mKeyEvent)
{
if ((!(android.os.Build.VERSION.SDK_INT > android.os.Build.VERSION_CODES.DONUT)
&& mKeyCode == KeyEvent.KEYCODE_BACK && mKeyEvent.getRepeatCount() == 0))
{
onBackPressed();
}
return super.onKeyDown(mKeyCode, mKeyEvent);
}
public void onBackPressed()
{
finish();
}
}
DeviceListActivity.java
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.view.View;
import android.view.Window;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.AdapterView.OnItemClickListener;
public class DeviceListActivity extends Activity
{
protected static final String TAG = "TAG";
private BluetoothAdapter mBluetoothAdapter;
private ArrayAdapter<String> mPairedDevicesArrayAdapter;
@Override
protected void onCreate(Bundle mSavedInstanceState)
{
super.onCreate(mSavedInstanceState);
requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
setContentView(R.layout.device_list);
setResult(Activity.RESULT_CANCELED);
mPairedDevicesArrayAdapter = new ArrayAdapter<String>(this, R.layout.device_name);
ListView mPairedListView = (ListView) findViewById(R.id.paired_devices);
mPairedListView.setAdapter(mPairedDevicesArrayAdapter);
mPairedListView.setOnItemClickListener(mDeviceClickListener);
mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
Set<BluetoothDevice> mPairedDevices = mBluetoothAdapter.getBondedDevices();
if (mPairedDevices.size() > 0)
{
findViewById(R.id.title_paired_devices).setVisibility(View.VISIBLE);
for (BluetoothDevice mDevice : mPairedDevices)
{
mPairedDevicesArrayAdapter.add(mDevice.getName() + "\n" + mDevice.getAddress());
}
}
else
{
String mNoDevices = getResources().getText(R.string.none_paired).toString();
mPairedDevicesArrayAdapter.add(mNoDevices);
}
}
@Override
protected void onDestroy()
{
super.onDestroy();
if (mBluetoothAdapter != null)
{
mBluetoothAdapter.cancelDiscovery();
}
}
private OnItemClickListener mDeviceClickListener = new OnItemClickListener()
{
public void onItemClick(AdapterView<?> mAdapterView, View mView, int mPosition, long mLong)
{
mBluetoothAdapter.cancelDiscovery();
String mDeviceInfo = ((TextView) mView).getText().toString();
String mDeviceAddress = mDeviceInfo.substring(mDeviceInfo.length() - 17);
Log.v(TAG, "Device_Address " + mDeviceAddress);
Bundle mBundle = new Bundle();
mBundle.putString("DeviceAddress", mDeviceAddress);
Intent mBackIntent = new Intent();
mBackIntent.putExtras(mBundle);
setResult(Activity.RESULT_OK, mBackIntent);
finish();
}
};
}
Android Manifest
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.androidvouge.bluetooth" android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/name"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen">
<activity android:name=".Main" android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".DeviceListActivity" android:theme="@android:style/Theme.Dialog"
android:configChanges="orientation|keyboardHidden"
android:screenOrientation="portrait" />
</application>
<uses-sdk android:minSdkVersion="7" android:targetSdkVersion="11" />
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<supports-screens android:smallScreens="false"
android:normalScreens="true" android:largeScreens="true" />
</manifest>
device_list.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView android:id="@+id/title_paired_devices"
android:layout_width="fill_parent" android:layout_height="wrap_content"
android:text="@string/title_paired_devices" android:visibility="gone"
android:background="#666" android:textColor="#fff"
android:paddingLeft="5dip" />
<ListView android:id="@+id/paired_devices"
android:layout_width="fill_parent" android:layout_height="wrap_content"
android:stackFromBottom="true" android:layout_weight="1" />
</LinearLayout>
device_name.xml
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" android:layout_height="wrap_content"
android:textSize="18sp" android:padding="5dip" />
main.xml has only button.
Here is the logcat output.
06-16 13:46:08.640 19062 19062 E CachedBluetoothDevice: updating profiles for $ $ S A \/ A N $ $
06-16 13:46:08.640 19062 19062 V CachedBluetoothDevice: opp classbits != uuid
06-16 13:46:08.640 19062 19062 V CachedBluetoothDevice: Class: 5a0204
06-16 13:46:08.640 19062 19062 V CachedBluetoothDevice: UUID:
06-16 13:46:08.640 19062 19062 V CachedBluetoothDevice: 00001101-0000-1000-8000-00805f9b34fb
06-16 13:46:08.667 19091 19091 V TAG : PairedDevices: $ $ S A \/ A N $ $ 00:1D:3B:05:B4:D5
06-16 13:46:10.582 19091 19091 V TAG : Device_Address 00:1D:3B:05:B4:D5
06-16 13:46:10.597 19091 19091 V TAG : Coming incoming address 00:1D:3B:05:B4:D5
06-16 13:46:10.597 19091 19091 V TAG : InsidepairToDeviceCalled
06-16 13:46:10.597 19091 19091 V TAG : InsideOpenSockedCalled
06-16 13:46:10.718 19091 19091 V TAG : InsideOpenSockedConnecterCalled
06-16 13:46:10.789 19091 19091 V TAG : LeavingpairToDeviceCalled
06-16 13:46:10.789 19091 19091 V TAG : pairToDeviceCalled
06-16 13:46:10.800 19091 19128 V TAG : InsideRunnableCalled
06-16 13:46:13.730 19091 19128 V TAG : InsideRunnableSocketConnectCalled
06-16 13:46:13.730 19091 19128 V TAG : Connected
06-16 13:46:13.730 19091 19128 V TAG : SockectClosed
06-16 13:46:13.734 19091 19091 V TAG : DialogClosed
Where am going wrong? Anybody who has successfully configured Bluetooth with processing dialog, Please give me a hand.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
请如下所示修改您的 Main.java 文件,并保留其余文件不变。
Main.java
谢谢。
Please modify your Main.java file like below and please keep the rest files at it is.
Main.java
Thanks.