小编ant*_*afe的帖子

在BLE的connectGatt中哪个正确的autoConnect标志?

我的目标是在蓝牙低功耗设备和手机之间建立自动连接.我按照示例代码找到了该行

// We want to directly connect to the device, so we are setting the autoConnect parameter to false.
mBluetoothGatt = device.connectGatt(this, false, mGattCallback);
Run Code Online (Sandbox Code Playgroud)

上面的代码表示false用于自动连接.但是,我在这里找到了API ,它说

BluetoothGatt connectGatt(上下文上下文,布尔autoConnect,BluetoothGattCallback回调,int传输)连接到此设备托管的GATT服务器.

我还尝试了两个标志:true而且false,只有true工作.我使用的是版本> = Android 5.0.代码和API之间有什么不一致吗?哪个标志是正确的?如果我想进行自动连接,是否需要注意?

这是我的代码

public boolean connect(final String address) {
    if (mBluetoothAdapter == null || address == null) {
        Log.w(TAG, "BluetoothAdapter not initialized or unspecified address.");
        return false;
    }

    // Previously connected device.  Try to reconnect.
    if (mBluetoothDeviceAddress != null && …
Run Code Online (Sandbox Code Playgroud)

android bluetooth bluetooth-lowenergy bluetooth-gatt

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

Android推介跟踪不起作用

我正在尝试让Android推荐跟踪工作.我正在关注我在此处找到的唯一文档http://code.google.com/mobile/analytics/docs/android/#referrals 我在我的android清单文件中有以下内容

<receiver  
android:name="com.google.android.apps.analytics.AnalyticsReceiver"  
android:exported="true">  
    <intent-filter>  
                <action android:name="com.android.vending.INSTALL_REFERRER" />  
        </intent-filter>  
</receiver>  
<receiver android:name="com.package.Receiver" android:exported="true">  
        <intent-filter>  
                <action android:name="com.android.vending.INSTALL_REFERRER" />  
        </intent-filter>  
</receiver>  
<uses-sdk android:minSdkVersion="4"/>  
Run Code Online (Sandbox Code Playgroud)

com.package.Receiver以:

public void onReceive(Context paramContext, Intent paramIntent) {  
        String str1 = paramIntent.getStringExtra("referrer");  
        Log.i("myapp", "action: '" + paramIntent.getAction() + "'  
referrer string: '" + str1 + "'"); 
Run Code Online (Sandbox Code Playgroud)

还有一点反编译com.google.android.apps.analytics.AnalyticsReceiver中包含以下代码:

public void onReceive(Context ctx, Intent intent)  
/*     */   {  
/*  24 */     String referrer = intent.getStringExtra("referrer");  
/*     */  
/*  26 */     if ((!  
("com.android.vending.INSTALL_REFERRER".equals(intent.getAction())))  
|| (referrer == null))  
/*     */ …
Run Code Online (Sandbox Code Playgroud)

android google-analytics referrer

11
推荐指数
2
解决办法
9701
查看次数

离开WebView后如何停止Flash?

我有一个应用程序,当用户单击按钮时,我将它放在一起以在webview中流式传输Flash视频.

它做得很好,但在退出或失去焦点后,看起来它会继续使用数据一段时间,直到我假设系统关闭活动时.如果我手动终止活动屏幕,数据使用几乎立即停止.刚刚退出,它可以继续运行一段时间.

有人可以帮我解决我的代码,我真的很感激!

import java.lang.reflect.Method;
import android.app.Activity;
import android.os.Bundle;
import android.webkit.WebSettings;
import android.webkit.WebView;

public class Video extends Activity {


    private WebView webview;


    @Override
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.video);


    webview = (WebView) findViewById(R.id.webview);

// resumeTimers() to account for the webview refcount bug (hopefully)
    webview.resumeTimers();
    WebSettings webSettings = webview.getSettings();
    webview.getSettings().setJavaScriptEnabled(true);
    webSettings.setPluginsEnabled(true);
    webview.setVerticalScrollBarEnabled (false);
    webview.setHorizontalScrollBarEnabled (false);

    webview.loadUrl("http://www.nasa.gov/multimedia/nasatv/nasatv_android_flash.html");
}


@Override
protected void onPause() {
pauseBrowser();
super.onPause();
}

@Override
protected void onResume() {
resumeBrowser();
super.onResume();
}



private void pauseBrowser() {

// pause flash …
Run Code Online (Sandbox Code Playgroud)

flash android webview android-webview

11
推荐指数
2
解决办法
8223
查看次数

MediaPlayer,ProgressBar

这是播放媒体时更新ProgressBar的正确方法吗?我想在MediaPlayer中会有一个回调,但我找不到它.

mediaPlayer.start();
final SeekBar progress = (SeekBar) dialog.findViewById(R.id.seekBar1);
progress.setMax(mediaPlayer.getDuration());
new CountDownTimer(mediaPlayer.getDuration(), 250) {
  public void onTick(long millisUntilFinished) {
    progress.setProgress(progress.getProgress() + 250);
  }
  public void onFinish() {}
}.start();
Run Code Online (Sandbox Code Playgroud)

最好的祝福.

android seekbar

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

在JustWorks配对模式下,电话(作为外围角色)不显示配对对话框

我正在编写一个通过BLE连接到物理设备的Android应用程序.Android应用程序将充当外围角色,而设备是中心.设备I/O功能也设置为NoInputNoOutput(ble_cmd_sm_set_parameters(0, 8, sm_io_capability_noinputnooutput))

建立连接的流程是:

  • 打开Android应用,然后打开蓝牙Gatt服务器连接 bluetoothManager.openGattServer()
  • 将BluetoothGattService添加到BluetoothGattServer中(此处该服务包含一些具有属性Indicate&Notify,权限读取和写入的特征)
  • 添加所有服务后,开始发送广告
  • 触摸设备上的按钮,让它开始扫描外围设备.
  • 当检测到手机时,设备会向手机发送配对信号.
  • 接收到该信号,理论上,Android设备将显示一个配对对话框,其中有2个按钮PAIR和CANCEL以确认配对(这是JustWorks模式而不是Passkey,因为它不需要我们使用键盘输入密钥).
  • 但是,在几款Android设备上进行测试后,其中一些设备有Moto Z(Android 6),Moto G(Android 6)等对话框,而其他设备则没有Galaxy S7,Galaxy Tab S2(均为Android 7).我使用WireShark捕获和分析这些设备的蓝牙包并实现前者Sent Pairing Request: AuthReqSecure Connection Flag = 1后者Secure Connection Flag = 0有关(有关安全连接标志的更多信息,请参阅蓝牙配对第4部分)

当从Android Studio logcat读取输出时(如果是三星设备),我得到这些日志: 01-31 15:21:53.322 D/BluetoothAdapter: isSecureModeEnabled 01-31 15:21:53.322 D/BtConfig.SecureMode: isSecureModeOn:false 01-31 15:21:53.325 D/BluetoothAdapter: STATE_ON 01-31 15:21:53.325 D/BluetoothLeAdvertiser: start advertising 不确定SecureMode是否与我们提到的SecureConnection相同.

据我所知,配对是BLE Secure Connections,采用JustWorks模式.但似乎并非所有的Android设备都支持它(你能否确认一下我的想法?).或者,我们如何强制后一个设备也有配对对话框?

一个重要的是,我有一个具有相同连接流和相同物理设备的iOS应用程序,它确实显示了配对对话框.

android bluetooth bluetooth-lowenergy bluetooth-peripheral pairing

11
推荐指数
0
解决办法
393
查看次数

在Android中收听app安装/升级的广播消息

使用Lookout应用程序(https://play.google.com/store/apps/details?id=com.lookout),我看到每次安装或升级应用程序时,它都会自动扫描此应用程序以确保它不是恶意的.

关注Lookout,我编写了一个简单的应用程序,可以在安装或升级每个应用程序时收听广播消息.AFAIK,有一些类型的IntentFilter用于广播消息,它是:

  • Intent.ACTION_PACKAGE_ADDED
  • Intent.ACTION_PACKAGE_CHANGED
  • Intent.ACTION_PACKAGE_INSTALL

我希望Intent.ACTION_PACKAGE_ADDED是答案,但它是错误的(ACTION_PACKAGE_ADDED:设备上已安装新的应用程序包.数据包含程序包的名称.请注意,新安装的程序包不接收此广播.)ACTION_PACKAGE_INSTALL不推荐使用.

谁能告诉我一个更好的方法?欢迎任何帮助.

android install broadcast broadcastreceiver

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

GLSurfaceView - 如何制作半透明背景

我尝试使用GLSurfaceView进行渲染,并通过文档设置格式:

getHolder().setFormat(PixelFormat.TRANSLUCENT);
Run Code Online (Sandbox Code Playgroud)

我使用GLSurfaceView.Renderer,它绘制onDrawFrame:

GLES20.glClearColor(0, 0, 1, .5f);
GLES20.glClear(GLES20.GL_DEPTH_BUFFER_BIT | GLES20.GL_COLOR_BUFFER_BIT);
Run Code Online (Sandbox Code Playgroud)

但是,GLSurfaceView中的GL渲染不是半透明的,而是完全蓝色的.如果我省略glClear调用,那么它是全黑的.

如何使GL渲染具有透明背景,以便与后面绘制的视图混合?

在此输入图像描述

编辑:这是我的GLSurfaceView:

class GLView extends GLSurfaceView{
   MyRenderer r;
   public GLView(Context ctx){
      super(ctx);
      setEGLContextClientVersion(2);

      getHolder().setFormat(PixelFormat.TRANSLUCENT);

      setEGLConfigChooser(8, 8, 8, 8, 16, 0);
      r = new MyRenderer(getContext());
      setRenderer(r);
   }
}
Run Code Online (Sandbox Code Playgroud)

android background transparent opengl-es-2.0

10
推荐指数
2
解决办法
7715
查看次数

使用 Riverpod 在 Flutter 中实现拉动刷新

我是 Riverpod 的新手,尝试在我的 Flutter 应用程序中使用 Riverpod 实现拉动刷新,但似乎在网上找不到任何好的教程。有没有人在使用 Riverpod 时在 Flutter 应用程序中实现了拉动刷新功能。我到处寻找教程,但我发现的大多数都是应用程序加载时的简单网络请求。提前致谢!

将这些依赖项用于 Riverpod 和网络请求。flutter_riverpod:^0.12.1 dio:^3.0.10

dart pull-to-refresh flutter riverpod

10
推荐指数
2
解决办法
4460
查看次数

在OpenGL和OpenGLES中使用glVertexAttribPointer

我正在阅读有关OpenGL和OpenGLES的教程,我glVertexAttribPointer对这两个API中函数的使用感到有点困惑.

OpenGL教程中,此函数使用数字偏移量作为最后一个参数(使用转换为const GLVoid*),我认为顶点直接取自当前的数组缓冲区.

glVertexAttribPointer(vs_position, 2, GL_FLOAT, GL_TRUE, 5 * sizeof(GLfloat), (const GLvoid*) (3*sizeof(GLfloat)) );
Run Code Online (Sandbox Code Playgroud)

OpenGLES教程中,最后一个参数直接指向表示顶点的结构:

GLFloat vertices[] = {...definition};
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0, vertices);
Run Code Online (Sandbox Code Playgroud)

我无法理解这两个功能是如何工作的.它们是完全不同的功能吗?

java opengl opengl-es

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

有什么方法可以在RiverPod的Provider中传递参数

如何将 FirebaseAuth 用户传递给 Riverpod 中的 StreamProvider?

使用旧的提供程序包时,我曾经从 FirebaseAuth 获取 user.uid 并将变量传递给 StreamProvider,如果可以获得 user.uid,则返回 StreamProvider。

@override
  Widget build(BuildContext context) {
    final FirebaseAuthService authService =
        Provider.of<FirebaseAuthService>(context, listen: false);
    return StreamBuilder<User>(
      stream: authService.onAuthStateChanged,
      builder: (BuildContext context, AsyncSnapshot<User> snapshot) {
        final User loggedInUser = snapshot.data;
        if (loggedInUser != null) {
          final String userId = loggedInUser.userId;
          return MultiProvider(
            providers: <SingleChildWidget>[
              StreamProvider<User>(
                initialData: User.initialData(),
                create: (_) => DB.instance.getLoggedInUserStream(
                  loggedInUserId: userId,
                ),
Run Code Online (Sandbox Code Playgroud)

provider flutter riverpod

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