示例代码的蓝牙连接问题

时间:2011-05-23 09:07:43

标签: android bluetooth

我正在尝试为游戏实现蓝牙多人游戏功能。但是连接存在问题。这令人困惑。我使用Android的示例代码,因为我之前从未尝试过类似的东西。

示例是一个简单的BluetoothChat。刚才我试着再次配对这些设备。

(至少Android 2.1)

Motorola FlipOut 索尼爱立信X10 mini HTC Legends

如果FlipOut正在扫描另一台设备并发送配对请求,则一切正常。如果其他两个设备尝试连接到FlipOut,则会在一个设备上显示配对请求。点击配对后没有任何事情发生。几秒钟后,我收到Toast-message“无法连接到设备。

我为TicTacToe使用相同的代码。但行为改变了。 FlipOut作为主机工作没有任何问题。但FlipOut无法连接到其他设备。最后几天我尝试了很多设备。例如三星Galaxy S,索尼爱立信X8,索尼爱立信X10 ......

我找不到规律性。我读过三星和HTC的方法“listenUsingRfcommWithServiceRecord”有问题。但它本应该在2月修复。

有人可以解释为什么它无法正常工作以及我如何解决它。如果我去设置并尝试建立连接,一切正常。这意味着必须有解决方案,即使示例代码不能正常工作吗?

我不确定是否有助于找到解决方案。但我安装了游戏“Galaxir”,一款来自Android Market的具有蓝牙多人游戏功能的应用程序。并且它也不能完美无缺。

2 个答案:

答案 0 :(得分:1)

尝试将此代码用于套接字连接,而不是createRfcommSocketToServiceRecord()

BluetoothDevice hxm = BluetoothAdapter.getDefaultAdapter().getRemoteDevice(device.getAddress());
Method m;
m = hxm.getClass().getMethod("createRfcommSocket", new Class[]{int.class});
socket = (BluetoothSocket)m.invoke(hxm, Integer.valueOf(1));

答案 1 :(得分:1)

我正在运行的蓝牙示例也没有用。这是因为他们没有在清单中声明服务。

使用以下代码替换您的清单,它应该可以使用。

<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2009 The Android Open Source Project

     Licensed under the Apache License, Version 2.0 (the "License");
     you may not use this file except in compliance with the License.
     You may obtain a copy of the License at

          http://www.apache.org/licenses/LICENSE-2.0

     Unless required by applicable law or agreed to in writing, software
     distributed under the License is distributed on an "AS IS" BASIS,
     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     See the License for the specific language governing permissions and
     limitations under the License.
-->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.example.android.BluetoothChat"
      android:versionCode="1"
      android:versionName="1.0">
    <uses-sdk minSdkVersion="6" />
    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
    <uses-permission android:name="android.permission.BLUETOOTH" />

    <application android:label="@string/app_name"
                 android:icon="@drawable/app_icon" android:debuggable="true">
        <activity android:name=".BluetoothChat"
                  android:label="@string/app_name"
                  android:configChanges="orientation|keyboardHidden">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <service android:name="BluetoothChatService">   
        </service>
        <activity android:name=".DeviceListActivity"
                  android:label="@string/select_device"
                  android:theme="@android:style/Theme.Dialog"
                  android:configChanges="orientation|keyboardHidden" />
    </application>
</manifest>