我很难调试 Android ANR 问题。
这是我从 Google Play Console - Android Vitals(Google Play 发布的版本)获得的信息:
安卓10:
at libcore.io.Linux.access (Native method)
at libcore.io.ForwardingOs.access (ForwardingOs.java:73)
at libcore.io.BlockGuardOs.access (BlockGuardOs.java:71)
at libcore.io.ForwardingOs.access (ForwardingOs.java:73)
at android.app.ActivityThread$AndroidOs.access (ActivityThread.java:7308)
at java.io.UnixFileSystem.checkAccess (UnixFileSystem.java:281)
at java.io.File.exists (File.java:815)
at android.app.ContextImpl.ensureExternalDirsExistOrFilter (ContextImpl.java:2670)
at android.app.ContextImpl.getExternalFilesDirs (ContextImpl.java:709)
at android.content.ContextWrapper.getExternalFilesDirs (ContextWrapper.java:258)
at androidx.core.content.ContextCompat.getExternalFilesDirs (ContextCompat.java:381)
at androidx.core.content.FileProvider.parsePathStrategy (FileProvider.java:691)
at androidx.core.content.FileProvider.getPathStrategy (FileProvider.java:635)
at androidx.core.content.FileProvider.attachInfo (FileProvider.java:416)
at android.app.ActivityThread.installProvider (ActivityThread.java:7045)
at android.app.ActivityThread.installContentProviders (ActivityThread.java:6590)
at android.app.ActivityThread.handleBindApplication (ActivityThread.java:6485)
at android.app.ActivityThread.access$1300 (ActivityThread.java:225)
at android.app.ActivityThread$H.handleMessage (ActivityThread.java:1865)
at android.os.Handler.dispatchMessage (Handler.java:107)
at android.os.Looper.loop (Looper.java:359)
at android.app.ActivityThread.main …Run Code Online (Sandbox Code Playgroud) 我想将元数据设置为MP4文件.
我通过以下方式创建MP4文件:
new MediaMuxer(mPath, MediaMuxer.OutputFormat.MUXER_OUTPUT_MPEG_4)
Run Code Online (Sandbox Code Playgroud)
和文件有元:
Title: unknown
Artist: unknown
Album: unknown
Comment:
...
Run Code Online (Sandbox Code Playgroud)
类似于:这里
我发现对于API21 +我可以通过以下方式制作元数据:MediaMetadata.Builder但是如何将元数据保存到创建的MP4文件?
请不要extern图书馆.
谢谢.
我想将手机中的数据与录制视频所花费的时间进行同步。我想获取有关录制视频所用时间的信息(以毫秒为单位)。我尝试通过以下方法解决该问题:
1.运行计时。
伪:
mMediaRecorder.start(); //start recording
startTime = System.currentTimeMillis(); //save start recording time
timerHandler.postDelayed(timerRunnable, 0); //for save elapsed time and timerHandler.postDelayed(this, 20); for next 20ms
Run Code Online (Sandbox Code Playgroud)
但是MediaRecorder存在问题,因为真实记录不会在MediaRecorder.start()之后立即开始,但是真实视频记录具有不同的延迟(取决于设备,...)。当MediaRecorder真正开始录制时,我需要“一些”回调或catch事件。
不需要有关停止录制的信息,因为我可以通过以下方式检查实际视频时长:
FileInputStream stream = new FileInputStream(storage.getVideoFile());
MediaMetadataRetriever retriever = new MediaMetadataRetriever();
retriever.setDataSource(stream.getFD());
String time = retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION);
Run Code Online (Sandbox Code Playgroud)
我尝试在录制时通过MediaMetadataRetriever获取实际持续时间,但它仅适用于关闭的视频文件。
我试图通过FileObserver和onEvent进行检测,但这是准确的。
如果可能的话,我想通过Android SDK解决。但是如何?
[最小SDK:API21]
谢谢。
我有通话问题:
Geocoder geocoder = new Geocoder(ctx, Locale.getDefault());
List<Address> data = geocoder.getFromLocation(latitude, longitude, 1);
Run Code Online (Sandbox Code Playgroud)
抛出异常:
java.io.IOException: Service not Available
W/System.err: at android.location.Geocoder.getFromLocation(Geocoder.java:136)
W/System.err: at <path to my class>.getGeolocationName(GPSTracker.java:325)
Run Code Online (Sandbox Code Playgroud)
Nexus 5
Android 7.1.1 来自xda
Google 应用程序(Gapps),从“Aroma”变体从这里安装。Google Play、Google 服务会自动安装。我添加了谷歌地图,谷歌软件包安装程序。
重新启动设备不能解决问题,因为问题是关于缺少包 i 的事情。
更新
如果 Geocoder 不可用,我使用 e Geocoding API:示例
来自此处:“ Geocoder 是 Google API 附加组件的一部分,不属于 AOSP。 ”我可以安装它吗?
我无法使用渐变来放大中心颜色的宽度。
目标是:

中心较大,带有一些颜色,侧面透明。
用法:
<ImageView
android:layout_width="match_parent"
android:layout_height="5dp"
android:src="@drawable/gradient_normal"/>
Run Code Online (Sandbox Code Playgroud)
我尝试了多种组合layer-list,但效果并不理想。一种解决方案是将Layout划分为50%-50%,然后将第一个渐变从左到右(从透明到彩色)设置为第二个从右到左(从彩色到透明),但是这种解决方案对我来说似乎非常复杂。
例如,此生成器无法放大中间的黄色。(有Android XML代码生成器。)
还有更简单的解决方案吗?谢谢。
API21 +
我已经看到:WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY始终与<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />in 结合使用AndroidManifest.xml。例如这里。
考虑以下代码:
windowManager = (WindowManager) this.getSystemService(Context.WINDOW_SERVICE);
surfaceView = new SurfaceView(this);
WindowManager.LayoutParams layoutParams = new WindowManager.LayoutParams(
100, 100,
WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY,
WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH,
PixelFormat.TRANSLUCENT
);
layoutParams.gravity = Gravity.START | Gravity.TOP;
windowManager.addView(surfaceView, layoutParams);
Run Code Online (Sandbox Code Playgroud)
我需要此代码SYSTEM_ALERT_WINDOW权限吗?
来自doc的有关SYSTEM_ALERT_WINDOW:
允许应用使用TYPE_SYSTEM_ALERT类型创建窗口,该窗口显示在所有其他应用的顶部。很少有应用程序应使用此权限;这些窗口用于与用户进行系统级交互。
大约TYPE_SYSTEM_ALERT不是TYPE_SYSTEM_OVERLAY。嗯?
更新:
行:windowManager.addView(surfaceView, layoutParams);
java.lang.RuntimeException: Unable to create service: android.view.WindowManager$BadTokenException: Unable to add window android.view.ViewRootImpl$W@10dca8ac -- permission denied for this window type
Run Code Online (Sandbox Code Playgroud)
因此可能<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />是必要的。
Genymotion冻结:"启动虚拟设备".
Ubuntu 16.04.2 LTS
Genymotion 2.8.1
- 清除缓存,
- 完全删除,然后重新安装,
- 删除所有虚拟设备并下载并安装新设备
- genymotion.log在.Genymobile文件夹中没有错误,
- genymotion-player.log在.Genymobile/Genymotion/deployed/Custom Phone - 7.0.0 - API 24 - 768x1280文件夹中:
b?e 6 18:57:08 [Genymotion Player] [warning] Unrecognized OpenGL version
b?e 6 18:57:08 [Genymotion Player] [warning] Unrecognized OpenGL version
Run Code Online (Sandbox Code Playgroud)
VirtualBox 5.1.14
- 完全删除,再次安装,
- 其他虚拟设备正确运行(即:其他Linux操作系统),
OpenGL的版本字符串:3.0梅萨12.0.6(命令:glxinfo | grep "OpenGL version")
类似:就像这里一样
我感谢您的帮助.谢谢.
EditText目标是将多行与“下一个视图按钮”一起使用android:inputType="textMultiLine",例如android:inputType="text"(见图 2)。
<EditText
android:id="@+id/addAffirmationContent"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textMultiLine"
android:maxLength="255"
android:imeOptions="flagNoExtractUi" />
Run Code Online (Sandbox Code Playgroud)
我尝试了许多与: 的组合
android:inputType, singleLine, nextFocusDown, nextFocusUp, nextFocusLeft, nextFocusRight, nextFocusForward, imeOptions, lines,但android:inputType="textMultiLine"总是强制换行按钮。
在 Nexus 5 Android 7 上测试。
android ×8
android-view ×1
genymotion ×1
google-maps ×1
media ×1
metadata ×1
mp4 ×1
opengl-es ×1
permissions ×1
ubuntu ×1
virtualbox ×1