小编Maz*_*zze的帖子

通知栏上的蓝牙配对请求?

嘿大家!

在Android之前开始使用蓝牙编程.但现在我遇到了一些问题.我想知道为什么配对请求有时会出现在通知栏中,有时会跳过此对话框并直接显示对话框.

例如:我从嵌入式设备发起配对请求,然后会出现如下通知:

英文:配对蓝牙请求

有时我不必费心去通知,我的对话框就像我预期的那样显示出来.

显示配对对话框,状态栏上没有通知

有没有办法捕获该通知并显示对话框,或者当我启动蓝牙配对时,这是我的代码中的错误?

编辑:

更新1:

检查了Reno给我的答案,这实际上取决于各种各样的事情.还有其他方法可以直接显示对话框.当配对请求到达时,调用以下方法.进行检查以查看对话框是应该显示在前台(true)还是显示为通知(false):

public boolean shouldShowDialogInForeground(String deviceAddress) {
    // If Bluetooth Settings is visible
    if (mForegroundActivity != null) return true;

    long currentTimeMillis = System.currentTimeMillis();
    SharedPreferences sharedPreferences = getSharedPreferences();

    // If the device was in discoverABLE mode recently
    long lastDiscoverableEndTime = sharedPreferences.getLong(
            BluetoothDiscoverableEnabler.SHARED_PREFERENCES_KEY_DISCOVERABLE_END_TIMESTAMP, 0);
    if ((lastDiscoverableEndTime + GRACE_PERIOD_TO_SHOW_DIALOGS_IN_FOREGROUND)
            > currentTimeMillis) {
        return true;
    }

    // If the device was discoverING recently
    if (mAdapter != null && mAdapter.isDiscovering()) {
        return true;
    } else if ((sharedPreferences.getLong(SHARED_PREFERENCES_KEY_DISCOVERING_TIMESTAMP, 0) + …
Run Code Online (Sandbox Code Playgroud)

android bluetooth request android-notification-bar

12
推荐指数
1
解决办法
8064
查看次数

firebase部署速度慢,没有响应

deploy命令运行到站点只会使终端闪烁,就像它在一些繁重的操作中卡住一样.

在此输入图像描述

什么都不会发生.我实际上并没有尝试使用--debug旗帜.

首先想到的是我是公司代理的幕后黑手.所以我设置了一个"纯粹"的连接,它仍然没有连接.那么问题是什么?

database deployment firebase firebase-hosting firebase-tools

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

在Android中使用网络服务发现的内部错误

在使用开发人员页面上的示例和教程首次实现NSDManager期间,应用程序成功启动了发现并找到了设备.

然而现在它似乎被打破了......

程序启动后,在初始化后,代码进入以下方法并成功运行:

public void discoverServices() {
    Log.d(TAG, "Initializing discovery on NSD");
    mNsdManager.discoverServices(
            SERVICE_TYPE, NsdManager.PROTOCOL_DNS_SD, mDiscoveryListener);
} 
Run Code Online (Sandbox Code Playgroud)

收到日志消息.经过一段时间(约5分钟),这是从程序输出:

05-21 11:08:32.518: E/NsdCamera(12236): Discovery failed: Error code:0
05-21 11:08:32.518: W/dalvikvm(12236): threadid=12: thread exiting with uncaught exception (group=0x40c9c930)
05-21 11:08:32.518: E/AndroidRuntime(12236): FATAL EXCEPTION: NsdManager
05-21 11:08:32.518: E/AndroidRuntime(12236): java.lang.NullPointerException
05-21 11:08:32.518: E/AndroidRuntime(12236):    at android.net.nsd.NsdManager$ServiceHandler.handleMessage(NsdManager.java:338)
05-21 11:08:32.518: E/AndroidRuntime(12236):    at android.os.Handler.dispatchMessage(Handler.java:99)
05-21 11:08:32.518: E/AndroidRuntime(12236):    at android.os.Looper.loop(Looper.java:137)
05-21 11:08:32.518: E/AndroidRuntime(12236):    at android.os.HandlerThread.run(HandlerThread.java:60)
Run Code Online (Sandbox Code Playgroud)

还来自服务:

05-21 11:50:49.108: E/NativeDaemonConnector.ResponseQueue(8858): Timeout waiting for response
05-21 11:50:49.108: E/mDnsConnector(8858): …
Run Code Online (Sandbox Code Playgroud)

networking android listener service-discovery discovery

7
推荐指数
1
解决办法
7232
查看次数

连接到已配对的蓝牙设备

最近,我尝试让配对过程以编程方式工作,并且成功了。但我最近发现我的应用程序的用户可以连接到几个“有趣的”设备。所以我必须提示用户选择要连接的设备

所以我必须将用户连接到已经配对的蓝牙设备。但我的努力都没有效果。我尝试使用以下命令再次运行配对过程:

tmp = device.createRfcommSocketToServiceRecord(MY_UUID);

还有以下内容:

Method m = mmDevice.getClass().getMethod("createRfcommSocket", new Class[] {int.class});
mmSocket = (BluetoothSocket) m.invoke(mmDevice, 1);
Run Code Online (Sandbox Code Playgroud)

这是我已经实现的方法,也是将我的手机与嵌入式蓝牙设备配对的唯一有效方法

所以我的问题是:

  • 我是否可以断开配对设备的连接,然后连接到另一个嵌入式设备?我尝试..简单地连接到新设备,但我无法让它工作

android android-bluetooth pairing

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

将 PCM 16bit LE 转换为 WAV

我正在尝试用 C 编写一个程序,将捕获的Raw 16kHz PCM 16 位文件转换为16 位 WAV

我读过一些帖子,人们推荐使用libsox. 安装了它,现在我真的很难理解手册页

到目前为止(通过阅读源代码中的示例)我已经发现structs

  • sox_format_t
  • sox_signalinfo_t

大概可以用来描述我输入的数据。如果有必要,我也知道我正在处理多少信息(时间)?

一些指导表示赞赏!

c audio wav pcm sox

3
推荐指数
1
解决办法
2212
查看次数

无符号长long在C中表现为奇数

在运行为MIPS编译的程序时,我偶然发现了一个非常奇怪的问题.下面的代码片段是获取时间纪元并将其以微秒精度存储在unsigned long long变量中.

该变量能够存储我检查过的8个字节sizeof(unsigned long long).

这段代码打印出来很奇怪:

unsigned long long microtime=0;
struct timeval time_camera = { .tv_sec=0, .tv_usec=0 };
gettimeofday(&time_camera,NULL);
microtime = time_camera.tv_sec * 1000000 + time_camera.tv_usec;
printf("Times is now %llu , time since epoch in seconds is: %lu\n", microtime, time_camera.tv_sec);
Run Code Online (Sandbox Code Playgroud)

它给了我以下输出:

>> Times is now 484305845 , time since epoch in seconds is: 1357751315
Run Code Online (Sandbox Code Playgroud)

但是,当我将计算分解为不同的行时,它才有效!:

unsigned long long microtime=0;
struct timeval time_camera = { .tv_sec=0, .tv_usec=0 };
gettimeofday(&time_camera,NULL);
microtime = time_camera.tv_sec;
microtime = microtime * …
Run Code Online (Sandbox Code Playgroud)

c variables unsigned-long-long-int undefined-behavior

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