小编Edu*_*ard的帖子

不允许启动服务

我正在开发同时具有Chromecast集成的流式应用程序。根据我的Crashlytics控制台,大量用户正在经历以下崩溃:

Fatal Exception: java.lang.IllegalStateException: Not allowed to start service Intent { act=com.google.android.gms.cast.framework.action.UPDATE_NOTIFICATION pkg=com.package.name cmp=com.package.name/com.google.android.gms.cast.framework.media.MediaNotificationService (has extras) }: app is in background uid UidRecord{4ee441 u0a213 CAC  bg:+11m25s10ms idle procs:1 seq(0,0,0)}
       at android.app.ContextImpl.startServiceCommon(ContextImpl.java:1538)
       at android.app.ContextImpl.startService(ContextImpl.java:1484)
       at android.content.ContextWrapper.startService(ContextWrapper.java:663)
       at com.google.android.gms.internal.cast.zzai.zzg(Unknown Source:269)
       at com.google.android.gms.internal.cast.zzai.onStatusUpdated(Unknown Source:1)
       at com.google.android.gms.cast.framework.media.zzr.onStatusUpdated(Unknown Source:30)
       at com.google.android.gms.internal.cast.zzdh.onStatusUpdated(Unknown Source:6)
       at com.google.android.gms.internal.cast.zzdh.zzn(Unknown Source:573)
       at com.google.android.gms.cast.framework.media.RemoteMediaClient.onMessageReceived(Unknown Source:2)
       at com.google.android.gms.internal.cast.zzct.run(Unknown Source:34)
       at android.os.Handler.handleCallback(Handler.java:789)
       at android.os.Handler.dispatchMessage(Handler.java:98)
       at android.os.Looper.loop(Looper.java:164)
       at android.app.ActivityThread.main(ActivityThread.java:6938)
       at java.lang.reflect.Method.invoke(Method.java)
       at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)
Run Code Online (Sandbox Code Playgroud)
  • 到目前为止,我无法复制它,这就是为什么我在这里发布它。Chromecast设备似乎正在尝试在后台通知我的应用程序。

  • 所有崩溃仅发生在Oreo上,并且在应用程序处于后台时出现。

  • 崩溃不是在几个版本之前就存在的,而且我有一段时间没有更改Chromecast代码了,所以我感觉到它的原因是更新了build.gradle文件中的某些依赖项。

  • 有几个崩溃组具有相同的原因和堆栈跟踪,但是每个崩溃组具有不同的UidRecord。

  • 我已经了解了Oreo中的后台执行限制,但是这似乎是我无法控制的,因为我自己没有涉及任何服务。

由于我需要为按钮自定义外观,因此这就是我集成Chromecast功能的方式:

<android.support.v7.app.MediaRouteButton
android:id="@+id/btn_cast".../> …
Run Code Online (Sandbox Code Playgroud)

android google-play-services chromecast

6
推荐指数
1
解决办法
929
查看次数

AVPlayer - 检索所有格式的音轨

我正在开发一个 tvOS 应用程序,我正在使用AVPlayer来播放 HLS 播放列表,该播放列表为某些语言提供两种格式的音频。例如:

\n\n
    \n
  • 法语 (AAC)
  • \n
  • 法语 (EC-3)
  • \n
  • 英语
  • \n
\n\n

我正在尝试显示一个自定义对话框,允许用户在每个曲目之间进行选择。

\n\n

播放列表如下所示:

\n\n
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="audio-mp4a.40.2",NAME="Fran\xc3\xa7ais",DEFAULT=YES,AUTOSELECT=YES,LANGUAGE="fr",URI="..."\n#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="audio-ec-3",NAME="Fran\xc3\xa7ais",DEFAULT=NO,AUTOSELECT=YES,LANGUAGE="fr",URI="..."\n#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="audio-mp4a.40.2",NAME="English",DEFAULT=NO,AUTOSELECT=YES,LANGUAGE="en",URI="..."\n
Run Code Online (Sandbox Code Playgroud)\n\n

问题是,据我所知,按AVPlayer语言对曲目进行分组,并且它永远不会返回所有 3 个曲目。

\n\n
(lldb) po player?.currentItem?.asset.mediaSelectionGroup(forMediaCharacteristic: .audible)\n\n\xe2\x96\xbf Optional<AVMediaSelectionGroup>\n  - some : <AVAssetMediaSelectionGroup: 0x283961940, options = (\n    "<AVMediaSelectionKeyValueOption: 0x2839a5a00, language = fr, mediaType = \'soun\', title = Fran\xc3\xa7ais, default = YES>",\n    "<AVMediaSelectionKeyValueOption: 0x2839a5b00, language = en, mediaType = \'soun\', title = English>"\n), allowsEmptySelection = YES>\n
Run Code Online (Sandbox Code Playgroud)\n\n

我深入研究了法语项目(player?.currentItem?.asset.mediaSelectionGroup(forMediaCharacteristic: .audible)?.options.first),但仍然找不到任何有用的东西。我也尝试从其他领域寻找但AVPlayer没有成功。

\n\n

即使当我使用时, …

http-live-streaming ios avplayer tvos

5
推荐指数
1
解决办法
1734
查看次数

在Octave中编写'for'的简单方法

我在Octave中编写了以下两段代码.

给定矩阵'img',我想:

用0替换所有不等于255的元素:

for i = 1:m
    for j = 1:n
        if (img(i,j) ~= 255)
            img(i,j) = 0;
        endif
    endfor
endfor
Run Code Online (Sandbox Code Playgroud)

将所有负数元素替换为0,将所有大于255的元素替换为255:

for i = 1:m
    for j = 1:n
        if (img(i,j) < 0)
            img(i,j) = 0;
        endif
        if (img(i,j) > 255)
            img(i,j) = 255;
        endif
    endfor
endfor
Run Code Online (Sandbox Code Playgroud)

有没有更简单的方法来写这个?

replace for-loop matrix octave

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

从文件中提取单词

如何从一个文件中提取所有单词,一行中的每个单词?例:

的test.txt

This is my sample text
Run Code Online (Sandbox Code Playgroud)

输出:

This
is
my
sample
text
Run Code Online (Sandbox Code Playgroud)

bash extract

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