在Android 6中,蓝牙低功耗连接参数管理似乎已经发生了变化.
我有一个BLE外围设备需要使用一些特定的连接参数(特别是连接间隔),我想使用BLE规范允许的最小连接间隔(即7,5ms).
Android SDK不允许从BLE GAP Central(智能手机)端选择它,因此正确的方法是让我的GAP外围设备L2CAP Connection Parameter Update Request在建立GAP连接后发送.
我要求的参数是:
这与我一直在测试的所有Android设备一样工作,从4.3到5.x:发送后L2CAP Connection Parameter Update Request,我的设备收到一个L2CAP Connection Parameter Update Response0x0000(接受),然后LE Connection Update Complete event我可以看到所请求的连接参数已经很好了考虑到了.
现在,使用Nexus 9平板电脑或2个不同的Nexus 5设备,都拥有Android 6.0.1,我可以看到它L2CAP Connection Parameter Update Request总是被拒绝(我收到的是L2CAP Connection Parameter Update Response0x0001(拒绝)).然后我收到一个LE Connection Update Complete event我可以看到所请求的连接参数未被考虑的地方.
我一直在尝试使用外设方面的两种不同的实现(一种是使用ST Microelectronics的BlueNRG,一种是使用Nordic Semiconductor的nRF52),两者的结果完全相同.
然后,经过更多的测试:我尝试了不同的参数集,更改了conn interval max(我保持其他参数相同).这是我发现的:
android bluetooth bluetooth-lowenergy android-bluetooth android-6.0-marshmallow
我需要实现一个基于EditText我的搜索功能RecyclerView.键入时必须过滤列表.
这是代码:
DisplayAdapter.java这是适配器
public class DisplayAdapter extends RecyclerView.Adapter<DisplayAdapter.MyViewHolder>{
private List<DataHolder> displayedList;
public class MyViewHolder extends RecyclerView.ViewHolder{
public TextView english_d;
public MyViewHolder(View view){
super(view);
english_d = (TextView) view.findViewById(R.id.engword);
}
}
public DisplayAdapter(List<DataHolder> displayedList){
this.displayedList = displayedList;
}
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int position) {
// create a layout
View itemView = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_item, parent, false);
return new MyViewHolder(itemView);
}
@Override
public void onBindViewHolder(MyViewHolder holder, int position) {
DataHolder content = displayedList.get(position);
holder.english_d.setText(content.getEnglish());
}
@Override
public int …Run Code Online (Sandbox Code Playgroud) Marshmallow重新设计了获取权限.所以在调用需要权限的方法之前处理权限并且它工作正常,但它在以下场景中崩溃:
第1步:打开应用程序并提供所有必要的权限
第2步:单击主页按钮(所以应用程序在后台)
第3步:手动更改"设置"中的权限
第4步:从多任务启动应用程序,现在它因应用程序上下文变得无效而崩溃
观察到应用再次创建,不明白为什么会发生这种情况.任何纠正这个问题的建议都会受到欢迎!
我正在使用gradle插件版本3.3.0并且我的gradle包装器正在使用 distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.1-all.zip
我在我的app/build.gradle文件中使用以下代码:
applicationVariants.all { variant ->
variant.outputs.each { output ->
def apk = output.outputFile //happens here (line 26)
def newName
if (variant.buildType.name == "release") {
newName = "ediary.apk"
} else {
newName = "ediary-debug.apk"
}
output.outputFileName = new File(
"./build/",
output.outputFile.name)
if (output.zipAlign) {
output.outputFileName = new File(
"./build/",
newName.replace("-unaligned", ""))
}
}
}
Run Code Online (Sandbox Code Playgroud)
该项目构建,但我收到此警告:
警告:API
'variantOutput.getPackageApplication()'已过时且已替换为'variant.getPackageApplicationProvider()'.它将在2019年底删除.有关更多信息,请参阅https://d.android.com/r/tools/task-configuration-avoidance.原因:来自:C:\ Users\my name\StudioProjects\core\app\build.gradle:26
我如何重写这个以避免警告?
在java中我们会做以下事情:
verify(myTestObject).execute(any(Callback.class))
Run Code Online (Sandbox Code Playgroud)
在 kotlin 中,如果我使用,any(Callback::class)我会得到“太多的参数用于公共乐趣任何():在 com.nhaarman.mockitokotlin2 中定义的 T”。
在PeriodicTimeRequest最小周期时间为15分。我想将它从 15 分钟减少到不到 15 分钟。我该怎么做?
在 Android PIE 上,我有一个在线性布局中包含多个 Edittext 视图的 Activity,并使用 SOFT_INPUT_ADJUST_PAN。当我在 Edittext 上使用软键盘打字时,不会显示文本。
如果我在靠近屏幕顶部的 Edittext 上键入文本,在显示软键盘时不需要 PAN 来保持 Edittext 可见,则一切正常。
如果我在靠近屏幕底部的 Edittext 上键入文本,其中 PAN 用于在显示软键盘时使 Edittext 保持可见,而我在键入时,键入的文本不会显示在 Edittext 上,但是一旦我按 Next 或 Done 隐藏键盘,我输入的文本会出现。
我没有关于活动的特殊代码,即使我删除了代码中对 EditTexts 的任何引用,问题仍然存在。这只发生在 Android Pie 设备上。
试过用针对 SDK27 的 SDK27 编译和用针对 SDK28 的 SDK28 编译,结果是一样的。
更新:
我发现是什么让它不起作用。我在应用程序级别的清单中有 android:hardwareAccelerated="false" 。如果我将其设置为 true,则它可以工作。
有没有办法让它在没有硬件加速的情况下工作?
当我完成我的活动时,我应该使用clearAnimation()还是stop()使用任何剩余的AnimationDrawable物体?
发布中的唯一文件是构建 apk。尽管在生成签名包时已选择发布,但 aab 文件仅位于调试文件夹中。
如何实现 JetPack Compose BottomSheet 状态更改的回调/侦听器机制?
类似于:
@Override
public void onStateChanged(@NonNull View bottomSheet, int newState) {
if (newState == BottomSheetBehavior.STATE_COLLAPSED && mIsCollapsedFromBackPress){
}
}
@Override
public void onSlide(@NonNull View bottomSheet, float slideOffset) {
}
});
Run Code Online (Sandbox Code Playgroud)
正如我们过去在 Java/Kotlin 中所做的那样。
现在,我将其作为 lambda 传递给另一个需要关闭底页的可组合项。
val closeSheet: () -> Unit = {
scope.launch {
modalState.hide()
}
}
Run Code Online (Sandbox Code Playgroud)
但我想得到底页已完全折叠的回调,我可以继续我的任务。
我面临的实际问题: 我正在单击按钮将可组合项转换为位图。该按钮位于 BottomSheet 内部,需要转换的可组合项位于 BottomSheet 后面。因此,有时底页也会出现在位图中。我只想在底页完全折叠时触发该过程。
我在 SO 上找到了这个答案,但问题仍然是关于回调。不知道如何使用它。
android bottom-sheet android-jetpack android-jetpack-compose