ANDROID连接配对蓝牙耳机

我想模拟要去throgh设置 - >无线 - >蓝牙的动作和编程连接配对的蓝牙耳机。 我已经做了在#1和谷歌一些搜索,都表明有API级前可无解11.然而,我感兴趣的是通过蓝牙实现Android系统的源代码偷看工作吧。 问题是,我不知道哪些特定的源代码,我应该检讨的。 有什么建议么? 非常感谢。

--------------解决方案-------------

好吧,我得到这个更新,可支持蜂窝了。 您需要将新的功能添加到该接口。 我这样做,在这里:

interface IBluetoothA2dp {
boolean connectSink(in BluetoothDevice device); // Pre API 11 only
boolean disconnectSink(in BluetoothDevice device); // Pre API 11 only
boolean connect(in BluetoothDevice device); // API 11 and up only
boolean disconnect(in BluetoothDevice device); // API 11 and up only
boolean suspendSink(in BluetoothDevice device); // all
boolean resumeSink(in BluetoothDevice device); // all
BluetoothDevice[] getConnectedSinks(); // change to Set<> once AIDL supports, pre API 11 only
BluetoothDevice[] getNonDisconnectedSinks(); // change to Set<> once AIDL supports,
int getSinkState(in BluetoothDevice device);
boolean setSinkPriority(in BluetoothDevice device, int priority); // Pre API 11 only
boolean setPriority(in BluetoothDevice device, int priority); // API 11 and up only
int getPriority(in BluetoothDevice device); // API 11 and up only
int getSinkPriority(in BluetoothDevice device); // Pre API 11 only
boolean isA2dpPlaying(in BluetoothDevice device); // API 11 and up only

}

然后,你需要在这个接口调用函数前检查API版本。 这里是我的例子:

if (android.os.Build.VERSION.SDK_INT < 11) {

IBluetoothA2dp ibta = getIBluetoothA2dp();
try {
Log.d(LOG_TAG, "Here: " + ibta.getSinkPriority(device));
if (ibta != null)
ibta.connectSink(device);
} catch (Exception e) {
Log.e(LOG_TAG, "Error " + e.getMessage());
}
} else {
IBluetoothA2dp ibta = getIBluetoothA2dp();
try {
Log.d(LOG_TAG, "Here: " + ibta.getPriority(device));
if (ibta != null)
ibta.connect(device);
} catch (Exception e) {
Log.e(LOG_TAG, "Error " + e.getMessage());
}
}

希望这可以帮助。 我能获得相同的应用程序有两种接口工作。

挣扎后的日子里,我现在已经成功地做​​到这一点,欢呼:)

  1. 添加android.bluetooth.IBluetoothA2dp.aidl在你的应用程序中的/ src目录目录;
  2. 在代码中添加该私有方法:

    private IBluetoothA2dp getIBluetoothA2dp() {

    IBluetoothA2dp ibta = null;

    try {

    Class c2 = Class.forName("android.os.ServiceManager");

    Method m2 = c2.getDeclaredMethod("getService", String.class);
    IBinder b = (IBinder) m2.invoke(null, "bluetooth_a2dp");

    Log.d("Felix", "Test2: " + b.getInterfaceDescriptor());

    Class c3 = Class.forName("android.bluetooth.IBluetoothA2dp");

    Class[] s2 = c3.getDeclaredClasses();

    Class c = s2[0];
    // printMethods(c);
    Method m = c.getDeclaredMethod("asInterface", IBinder.class);

    m.setAccessible(true);
    ibta = (IBluetoothA2dp) m.invoke(null, b);

    } catch (Exception e) {
    Log.e("flowlab", "Erroraco!!! " + e.getMessage());
    }

  3. 与这个测试吧:

    private void testBluetoothA2dp(BluetoothDevice device) {
    // TODO Auto-generated method stub
    // TODO Auto-generated method stub
    IBluetoothA2dp ibta = getIBluetoothA2dp();
    try {
    Log.d("Felix", "Here: " + ibta.getSinkPriority(device));
    ibta.connectSink(device);
    } catch (RemoteException e) {
    // * TODO Auto-generated catch block
    e.printStackTrace();
    }

    }

我不能够提供这些代码引用的,因为我已经花了很多时间谷歌搜索,检查出计算器和审查Android源代码,但未能追踪来源。 非常感谢您在你们#1 :)

我想这在Android 4.2及以下线路返回null。 它正在研究4.1,任何想法?

IBinder b = (IBinder) m2.invoke(null, "bluetooth_a2dp");

这是一种涉及到连接/重新连接问题(正确答案的是一个苹果脚本)..

我刚刚买了一个Android的HTC One V和使用它作为通过应用程序PdaNet热点我(我的手机上安装了和我的MAC OS 10.5.8 PPC笔记本电脑)。

我似乎无法得到热点圈养通过WiFi或USB的工作,但它确实能使用蓝牙好! 唯一的问题是连接只持续了2分钟至40分钟(看它现在公顷,创下了),我必须手动重新连接,只需要2秒,但它会是不错的,如果我的Mac的网络方面的可能自动重新连接。

我的手机是没有问题的,因为它是发出一个恒定的信号(虽然我可以从我的手机,这是正常连接的东西暂时失去信号)..问题是有我的笔记本电脑自动重新连接。 我的笔记本电脑和HTC一个V DO保持配对,但只是没有自动重新连接在笔记本电脑上结束。

我希望我知道苹果脚本BCS然后我可能会写一个苹果脚本,AUTO-重新连接丢失的蓝牙连接..或者一个小部件能做到这一点? 如果是的话我有它在树荫下作出蓝牙网络工作很好。

我希望这将有助于自己和他人寻找相同的答案。如果你保持这个线程开放我可以做一些可能的苹果脚本的解决方案后返回(我将不得不快速学习)..谢谢-marcus

分类:安卓 时间:2015-03-15 人气:3
本文关键词: 机器人,蓝牙,耳机
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.265 (s). 10 q(s)