SwitchMaterial所以我在一种布局中使用:
<com.google.android.material.switchmaterial.SwitchMaterial...
Run Code Online (Sandbox Code Playgroud)
Firebase Crashlytics 向我发送垃圾邮件,其中许多用户都收到以下错误
致命异常:java.lang.RuntimeException 无法启动活动 ComponentInfo{...}:android.view.InflateException:二进制 XML 文件行 #324:二进制 XML 文件行 #324:膨胀类 com.google.android.material 时出错。 switchmaterial.SwitchMaterial
由 android.content.res.Resources$NotFoundException 引起,来自可绘制资源 ID #0x7f080047 的文件 res/drawable/abc_switch_thumb_material.xml
应用主题:
<style name="AppTheme" parent="Theme.MaterialComponents.Light.NoActionBar">...
Run Code Online (Sandbox Code Playgroud)
材料部:
implementation "com.google.android.material:material:1.6.1"
Run Code Online (Sandbox Code Playgroud)
这是什么意思?
更新
我尝试使用SwitchAndroidX AppCompat 库,但仍然存在与可绘制对象相同的问题:
Fatal Exception: java.lang.RuntimeException Unable to start activity ComponentInfo{****.ui.MainActivity}: android.view.InflateException: Binary XML file line #324: Binary XML file line #324: Error inflating class androidx.appcompat.widget.SwitchCompat
Caused by android.content.res.Resources$NotFoundException Drawable ***:drawable/abc_switch_thumb_material with resource ID #0x7f080047
这太奇怪了,虽然它在我的智能手机上运行良好,但它已经影响了我的 22 个用户
是的,我为发布版本启用了以下两个选项
minifyEnabled true
shrinkResources true
Run Code Online (Sandbox Code Playgroud)
但对于不同的应用程序来说,它一直工作得很好,而且我从来不需要向 …
如何使用ffmpeg从视频文件容器(.vob或.mkv)中只删除一个轨道(不是全部)?
我知道我可以将视频(-c:v copy -an)和特定音轨从容器复制到两个独立的文件中然后加入它们.
但是有更简单的方法吗?我可以从容器中删除特定的音轨吗?ffmpeg命令?
本周我使用 Android Studio 构建了 3-4 次发布包,并且我总是选中“记住密码”。
但是每次我进行新版本构建时,它都会要求输入密码,因此忽略“记住密码”,只记住“密钥存储路径”和“密钥别名”字段。
前段时间还可以用,但现在不行了。4.1 版中的 Mb 错误,我不知道。
有人有这个问题吗?能解决吗?
更新它会重置所有项目的密码,并仅保留用于构建发布包/apk 的最后一个项目
我正在尝试MediaRecorder不使用Camera实例而是使用Surface视频源进行录制(是的,这是可能的,但事实证明它并不完美)-mediaRecorder.setVideoSource(MediaRecorder.VideoSource.SURFACE);
我只写什么问题:
下一个代码仅适用于某些设备,并在最近的设备重新启动后在某些设备上临时工作或根本不起作用
如果它不起作用 okMediaRecorder.stop()方法失败并出现下一个错误
E/MediaRecorder:停止失败:-1007 W/System.err:
java.lang.RuntimeException:停止失败。在
android.media.MediaRecorder.stop(本机方法)
录音机 mp4 文件太小(千字节),无法播放
测试设备:
适用于联想 P2、小米 A1
不适用于小米红米 5、索尼 Xperia、小米红米 4 Prime
您也可以阅读我的代码中的注释以更好地理解问题
new Thread(() -> {
MediaRecorder mediaRecorder = new MediaRecorder();
File file = new File(Environment.getExternalStorageDirectory()
+ File.separator + "test_media_recorder_surface_source.mp4");
if (file.exists()) {
file.delete();
}
mediaRecorder.setVideoSource(MediaRecorder.VideoSource.SURFACE);
mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
mediaRecorder.setOutputFile(file.getAbsolutePath());
mediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);
mediaRecorder.setVideoSize(1280, 720);
mediaRecorder.setCaptureRate(24);
try {
mediaRecorder.prepare();
int sleepTime = 1000 / 24;
Surface surface = mediaRecorder.getSurface();
mediaRecorder.start();
// record something (we can …Run Code Online (Sandbox Code Playgroud) android surface android-canvas mediarecorder android-mediarecorder
Marquee仅适用于已弃用singleLine:
<TextView
...
android:ellipsize="marquee"
android:singleLine="true"
android:marqueeRepeatLimit="marquee_forever"/>
Run Code Online (Sandbox Code Playgroud)
并且不适用于maxLines= 1:
<TextView
...
android:ellipsize="marquee"
android:maxLines="1"
android:marqueeRepeatLimit="marquee_forever"/>
Run Code Online (Sandbox Code Playgroud)
并且总是使用mTextView.setSelected(true);当然
Google 控制台说我的应用没有针对平板电脑进行优化
为平板电脑设计应用
您的正式版 APK 需要满足以下条件:
您的 APK 应包含用于常见平板电脑屏幕密度的自定义可绘制资源
我的res文件夹我有下一个可绘制的文件夹:
drawable
drawable-hdpi
drawable-xhdpi
drawable-xxhdpi
drawable-xxxhdpi
Run Code Online (Sandbox Code Playgroud)
drawable文件夹包含 76 个 PNG 和 48 个 XML drawable-hdpi , drawable-xhdpi , drawable-xxhdpi , drawable-xxxhdpi文件夹包含 76 个 PNG 但大小(宽 x 高)不同
我有一个将视频录制到共享 MOVIES 文件夹的应用程序。
我可以使用contentResolver.delete(uri, null, null)我录制的视频活动中的方法删除 Android 11 (API 30) 上的这些文件。
但是,如果我重新安装该应用程序,那么它就会失去对这些文件的权限......(如此糟糕),在这种情况下,我需要做这样的事情:
try {
context.contentResolver.delete(uri, null, null)
} catch (exception: Exception) {
if (exception is RecoverableSecurityException) {
val intentSender = exception.userAction.actionIntent.intentSender
intentSender?.let {
callback?.startIntentSenderForResult(
intentSender,
requestCode
)
}
}
}
Run Code Online (Sandbox Code Playgroud)
因此它无法删除文件,ContentResolver因为应用程序已重新安装,并且有一个例外,我们可以捕获并打开下一个烦人的对话框以供用户确认删除(并且对于每个文件删除,它应该是一个不同的对话框,多次删除 - 否道路)
然后我在这个 Android 11 设备(模拟器)上安装了来自 Google Play 的 Explorer 应用程序,当我打开它时,该应用程序只要求存储写入权限(我的应用程序也这样做)并且这个 Explorer 应用程序可以轻松删除任何文件(包括我录制的视频)文件)没有任何确认对话框。
那么他们是如何做到的呢?这是一个黑客还是什么?
链接到应用程序https://play.google.com/store/apps/details?id=com.speedsoftware.explorer
更新
VLC for Android 也可以删除任何媒体文件https://play.google.com/store/apps/details?id=org.videolan.vlc
他们也使用内容提供程序,所以它是一样的,但它返回的true不像我的应用程序,为什么?
fun deleteFile(file: File): Boolean {
var deleted: Boolean
//Delete from …Run Code Online (Sandbox Code Playgroud) 如何仅设置 UILabel 文本属性一次,然后仅更改文本(字符串)
mTextValue.attributedText = NSAttributedString(string: "STRING",
attributes:
[NSAttributedStringKey.strokeWidth: -3.0,
NSAttributedStringKey.strokeColor: UIColor.black])
mTextValue.text = "NEW STRING" // won't change anything
Run Code Online (Sandbox Code Playgroud)
或者要设置新字符串,我必须一次又一次地NSAttributedString设置吗?.attributedText
不久前,我可以在 Google Chrome 扩展程序中为上下文菜单保存创建项目的 ID:
背景.js:
var myItem;
if (myItem !== "MyItem") {
myItem = chrome.contextMenus.create({
title: "My item",
id: 'MyItem',
contexts: ["page"]
});
}
Run Code Online (Sandbox Code Playgroud)
但是现在当我首先打开 Chrome 时,它说:
运行 contextMenus.create 时未选中的 runtime.lastError:无法创建具有重复 id MyItem 的项目
(来自调试控制台)
所以当我关闭 Chrome 时,它不再记得我的变量“myItem”(它的数据)。它只在 Chrome 打开时记住。
那么现在我应该使用chrome.storage.local.get还是set保存我的上下文菜单项的 ID?
更新:
问题是"persistent": false背景清单中的一个:
"background": {
"scripts": [ "background.js" ]
},
Run Code Online (Sandbox Code Playgroud)
已删除,现在可以正常使用[已解决]
android ×5
android-11 ×1
android-file ×1
ffmpeg ×1
ios ×1
javascript ×1
material-components-android ×1
surface ×1
swift ×1
uilabel ×1
video ×1