小编Tom*_*ola的帖子

什么触发了BluetoothDevice.ACTION_ACL广播?

我想知道远程物理设备中的哪些事件在监听设备中触发ACTION_ACL_CONNECTED和ACTION_ACL_DISCONNECTED.我的测试结果毫无意义.我已经在几分之一的范围内收集了几个设备:

运行Android 3.1的Galaxy Tab P7500

运行Android 2.2的i5500手机

带有蓝牙USB加密狗的PC winXP

两个带开/关按钮的耳机

首先,我手动配对Tab中的所有设备.除了Tab之外,PC和手机都没有与任何其他设备配对.(标签永远不会以任何方式找到其中一个耳机,但可以通过手动和编程方式轻松找到它.然后我有一个简单的应用程序来启动发现,并监听和显示ACL广播.这就是发生的事情(每次都是一样的,它的疯狂一致):

  • 来自Tab的startDiscovery()启用了所有设备: - PC是唯一找到的设备
  • 在PC上禁用蓝牙: - 选项卡上没有反应
  • 在PC上启用蓝牙: - 选项卡上没有反应

  • 首次打开耳机电源: - 选项卡上的ACTION_ACL_CONNECTED

  • 关闭耳机电源: - 标签上没有反应
  • 再次打开耳机: - 选项卡上的ACTION_ACL_DISCONNECTED和ACTION_ACL_CONNECTED快速连续

  • 禁用选项卡上的蓝牙: - 选项卡上没有反应

  • 在选项卡上启用蓝牙: - 选项卡上的耳机ACTION_ACL_CONNECTED

  • 来自手机的startDiscovery(): - PC是手机找到的唯一设备,虽然手机只与Tab配对,而不是与PC配对.否则,手机只会响应Tab从不作出反应的耳机.

怎么弄出这个烂摊子?即使配对并在范围内上电,也不能依赖导致ACTION_ACL_CONNECT的设备吗?

以下是BroadcastReceiver和onCreate活动的方法,但我不认为此代码中的细节很重要:

BroadcastReceiver intentReceiver = new BroadcastReceiver() {
    public void onReceive(Context context, Intent intent) {
        String action = intent.getAction();
        BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
        if (device != null) {
            name = device.getName();
        Log.v(TAG, "Device=" + device.getName());
        }
        else {
            name = "None";
        } …
Run Code Online (Sandbox Code Playgroud)

android bluetooth device broadcastreceiver

26
推荐指数
1
解决办法
1万
查看次数

Eclipse中的文件资源管理器始终为空

Eclipse中的文件资源管理器视图曾经工作过,因此当应用程序运行时,我可以在其内存中查看和管理文件.但是几天以来,文件资源管理器总是完全空的.适用于仿真器和物理设备.

有关如何使此功能再次使用的任何建议都是非常受欢迎的!

eclipse android file

8
推荐指数
1
解决办法
1万
查看次数

如何识别*哪个*蓝牙设备导致ACTION_ACL_CONNECTED广播?

我想听一些特定的蓝牙设备的连接/断开连接,这些设备的MAC地址我知道,但不一定配对(我不想弄乱用户的配对设备列表,反之亦然).我只对发现他们的存在感兴趣,而不是与他们沟通.

这适用于我的下面的代码!但我的问题是,我无法找出哪个特定设备正在连接/断开连接,只是它发生在某人身上.我怎样才能找出行动涉及哪一个?

首先,我为我的两个特定物理蓝牙设备实例化对象,并将它们添加到我的intent过滤器:

    BluetoothDevice myPinkHeadset = mBluetoothAdapter.getRemoteDevice("18:17:0C:EB:9C:81");
    BluetoothDevice myPcBluetoothDongle = mBluetoothAdapter.getRemoteDevice("5A:7A:CC:4B:C5:08");

    IntentFilter intentFilter = new IntentFilter();
    intentFilter.addAction(myPinkHeadset.ACTION_ACL_CONNECTED);
    intentFilter.addAction(myPinkHeadset.ACTION_ACL_DISCONNECTED);
    intentFilter.addAction(myPcBluetoothDongle.ACTION_ACL_CONNECTED);
    intentFilter.addAction(myPcBluetoothDongle.ACTION_ACL_DISCONNECTED);
Run Code Online (Sandbox Code Playgroud)

然后我听他们的广播:

    final BroadcastReceiver intentReceiver = new BroadcastReceiver() {  
        public void onReceive(Context context, Intent intent) {
            String action = intent.getAction();
Run Code Online (Sandbox Code Playgroud)

现在我想知道哪一个已连接和/或断开连接,我不知道如何做到这一点.

1)我直接使用"BluetoothDevice".它对广播的反应很好,但它并没有告诉我这两个物理设备中的哪一个涉及行动.他们是一种找出方法吗?不允许使用Bluetooth.getName(),因为它不是静态类.

if (BluetoothDevice.ACTION_ACL_CONNECTED.equals(action)) { 
        } 
Run Code Online (Sandbox Code Playgroud)

或2)我听两个设备的两个动作.

        if (myPinkHeadset .ACTION_ACL_CONNECTED.equals(action)) {
            Log.v(TAG, "Connected to myPinkHeadset ");
        }
        else if (myPinkHeadset .ACTION_ACL_DISCONNECTED.equals(action)) {
            Log.v(TAG, "Disconnected from myPinkHeadset ");
        }
        else if (myPcBluetoothDongle .ACTION_ACL_CONNECTED.equals(action)) { 
            Log.v(TAG, "Connected to myPcBluetoothDongle ");
        }
        else if …
Run Code Online (Sandbox Code Playgroud)

android bluetooth broadcastreceiver

8
推荐指数
1
解决办法
4316
查看次数

为什么在StartActivityForResult之后resultCode = -1?

一切正常,除了这个活动给出resultCode = -1

public class SetTimeDialog extends Activity{

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.settimedialog);


    Button bUseTime = (Button) findViewById(R.id.buttonUseTime_settime);
    bUseTime.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {

            Intent resultIntent = new Intent(this, SetTimeDialog.class);
            setResult(Activity.RESULT_OK, resultIntent);
            finish();
        }
    });
Run Code Online (Sandbox Code Playgroud)

它在MainActivity中从这里调用:

    TableLayout timeTable = (TableLayout)findViewById(R.id.timeTable_writepos);
    timeTable.setOnTouchListener(new View.OnTouchListener() {
        public boolean onTouch(View v, MotionEvent event) {
            Intent settimedialogIntent = new Intent(getApplicationContext(), SetTimeDialog.class);
            startActivityForResult(settimedialogIntent, SETTIMEDIALOG_REQCODE); // See onActivityResult()
            return false;
        }
    });
Run Code Online (Sandbox Code Playgroud)

在我的onActivityResult方法中,我现在什么都不做,只检查resultCode的值.(我已经删除了所有其他代码以找出错误).

android android-intent

7
推荐指数
2
解决办法
4474
查看次数

我如何获得蓝牙设备的UUID?

我需要知道API 8(2.2)或2.3.3上的UUID.

据我了解文档,应该允许:

    phoneDevice = blueAdapter.getRemoteDevice(phoneAddress);
    ParcelUuid[] phoneUuids = phoneDevice.getUuids();  // Won't compile
Run Code Online (Sandbox Code Playgroud)

Eclipse给了我: "方法getUuids()未定义为BluetoothDevice类型." 但请参阅:http: //developer.android.com/reference/android/bluetooth/BluetoothDevice.html#getUuids()

另外,我想知道UUID是如何在ParcelUuid []中"分配"的.如果我设法到达那里,如何从parcelUuid []中检索UUID?在我看来,Android蓝牙的文档似乎很差.

真是笑话!现在我尝试从意图中得到它,但这也给出了:*"EXTRA_UUID无法解析或不是字段"*:

intent.getParcelableExtra(BluetoothDevice.EXTRA_UUID); 
Run Code Online (Sandbox Code Playgroud)

uuid android bluetooth

5
推荐指数
2
解决办法
2万
查看次数

想要使用向量作为函数的参数,而不必分离其元素

如果我使用:func(1,2,3,4,5)调用matlab函数, 它可以完美地工作.

但如果我这样做: a = [1,2,3,4,5] %(a [1; 2; 3; 4; 5]给出相同的结果)

然后:

FUNC(a)中

给我:

??? 错误==> func at 11没有足够的输入参数.

func.m中的第11行是:

错误(nargchk(5,6,nargin));

我注意到这完美地运作:

FUNC(一(1),(2),(3),(4),(5))

如何使用向量'a'作为函数的参数?我有另一个函数otherfunc(b)返回一个,并希望将其输出用作这个func(otherfunc(b))的参数.

matlab function parameter-passing

5
推荐指数
2
解决办法
2万
查看次数

构造函数可以中止实例化吗?

我想在构造函数中进行测试,以确定当前是否使用给定参数实例化对象是一个好主意.但是我如何中止并从构造函数向新语句返回警告?在每个"新"声明之前,调用者是否必须进行此类测试?我认为构造函数对它来说是个好地方.

java constructor

1
推荐指数
2
解决办法
3597
查看次数