stackoverflow 本身针对此错误提出了很多问题,但没有一个问题真正解决了这个问题。setDataSource 失败:MediaMetadataRetriever 的状态 = 0x80000000。Android 7、9、10 运行良好。我只对android 8有问题。在三星 j5 prime 中测试。使用 xamarin.forms 版本 4.8.0.1821.all 权限为好。
MediaMetadataRetriever retriever = new MediaMetadataRetriever();
retriever.SetDataSource(filePath);
string time = retriever.ExtractMetadata(MetadataKey.Duration);
long ms = Java.Lang.Long.ParseLong(time);
{Java.Lang.RuntimeException: setDataSource failed: status = 0x80000000
at Java.Interop.JniEnvironment+InstanceMethods.CallVoidMethod (Java.Interop.JniObjectReference instance, Java.Interop.JniMethodInfo method, Java.Interop.JniArgumentValue* args) [0x0006e] in <42748fcc36b74733af2d9940a8f3cc8e>:0
at Java.Interop.JniPeerMembers+JniInstanceMethods.InvokeVirtualVoidMethod (System.String encodedMember, Java.Interop.IJavaPeerable self, Java.Interop.JniArgumentValue* parameters) [0x0002a] in <42748fcc36b74733af2d9940a8f3cc8e>:0
at Android.Media.MediaMetadataRetriever.SetDataSource (System.String path) [0x00029] in <7d2292394f8c488b97f5bc2a0ac0240d>:0
--- End of managed Java.Lang.RuntimeException stack trace ---
java.lang.RuntimeException: setDataSource failed: status = 0x80000000
at android.media.MediaMetadataRetriever.setDataSource(Native Method)
at android.media.MediaMetadataRetriever.setDataSource(MediaMetadataRetriever.java:78)