Codenameone createBackgroundMedia方法不适用于URL和本地文件

Codenameone createBackgroundMedia方法不适用于URL和本地文件,codenameone,Codenameone,我认为createBackgroundMedia()方法存在问题。下面这个简单的代码不起作用 TextArea log=new TextArea(10,5); Button b=new Button("Play"); b.addActionListener(evt->{ Display.getInstance().scheduleBackgroundTask(() -> { try{

我认为createBackgroundMedia()方法存在问题。下面这个简单的代码不起作用

TextArea log=new TextArea(10,5); 

        Button b=new Button("Play");
        b.addActionListener(evt->{
            Display.getInstance().scheduleBackgroundTask(() -> {

                try{
                      Media audio = MediaManager.createBackgroundMedia("http://live2.vestaradio.com/RSL");
                      audio.prepare();
                      audio.play();

                } catch(IOException err){
                    ToastBar.showErrorMessage("Erreur du streaming audio: ");
                }
            });

            String logs=NativeLogs.getNativeLogs();

            log.setText(logs);
        });

        hi.add(b);
        hi.add(contenu);
我使用本机日志cn1lib获取日志文本。我希望它能帮助找到问题:

--------- beginning of main
10-12 15:23:28.555  1221  1261 D OpenGLRenderer: ProgramCache.generateProgram: 103079215104
10-12 15:23:28.570  1319  1319 W EDT     : type=1400 audit(0.0:1356): avc: denied { search } for name="bin" dev="mmcblk0p20" ino=228481 scontext=u:r:untrusted_app:s0:c512,c768 tcontext=u:object_r:wland_data_file:s0 tclass=dir permissive=0
--------- beginning of system
10-12 15:23:28.597  1221  1221 V ActivityThread: SVC-Creating service CreateServiceData{token=android.os.BinderProxy@1e4de83 className=com.codename1.media.AudioService packageName=eric.dodji.app intent=null}
10-12 15:23:28.597  1221  1221 D CN1     : onCreate
10-12 15:23:28.599  1221  1221 D ActivityThread: SVC-Calling onStartCommand: com.codename1.media.AudioService@690d800, flags=0, startId=1
10-12 15:23:28.616  1221  1221 D CN1     : http://live2.vestaradio.com/RSL
10-12 15:23:28.618  1221  1221 W MediaPlayer: Couldn't open http://live2.vestaradio.com/RSL: java.io.FileNotFoundException: No content provider: http://live2.vestaradio.com/RSL
10-12 15:23:28.621  1221  1221 D MPlugin : com.mediatek.common.media.IOmaSettingHelperClazz exists on mapping table : true
10-12 15:23:28.621  1221  1221 V MPlugin : Create new path class loader (/vendor/plugin/FwkPlugin/FwkPlugin.apk)
10-12 15:23:28.632  1221  1221 D MPlugin : Load class : com.mediatek.op.media.DefaultOmaSettingHelper successfullyPathClassLoader :dalvik.system.PathClassLoader[DexPathList[[zip file "/vendor/plugin/FwkPlugin/FwkPlugin.apk"],nativeLibraryDirectories=[/system/lib, /vendor/lib, /system/vendor/lib]]]
10-12 15:23:28.638  1221  1221 W System  : ClassLoader referenced unknown path: /data/app-lib/FwkPlugin
10-12 15:23:28.646  1221  1221 D MPlugin : Exception occurs when using constructor with Context
10-12 15:23:28.647  1221  1221 V DefaultOmaSettingHelper: setSettingHeader: with uri=http://live2.vestaradio.com/RSL
10-12 15:23:28.648  1221  1221 V DefaultOmaSettingHelper: isOMAEnabled: enabled=true
10-12 15:23:28.648  1221  1221 I DefaultOmaSettingHelper: setOmaSettingHeader(com.codename1.media.AudioService@690d800,null)
10-12 15:23:28.651  1221  1221 V DefaultOmaSettingHelper: setOmaSettingHeader: params:minUdpPort=1024minUdpPort=1024maxUdpPort=65535rtspProxyEnable=0rtspProxyHost=nullrtspProxyPort=-1httpProxyEnable=0httpProxyHost=nullhttpProxyPort=-1httpBufferSize=10rtspBufferSize=4
10-12 15:23:28.670  1221  1221 D MediaPlayer: Don't notify duration to eric.dodji.app!
10-12 15:23:28.683  1221  1297 D MediaHTTPConnection: disconnect finish
10-12 15:23:28.695  1221  1252 D NetworkSecurityConfig: No Network Security Config specified, using platform default
10-12 15:23:30.364  1221  1252 D libc-netbsd: getaddrinfo: live2.vestaradio.com get result from proxy gai_error = 0
10-12 15:23:30.365  1221  1252 I System.out: [socket][0] connection live2.vestaradio.com/149.202.186.135:80;LocalPort=-1(30000)
10-12 15:23:30.366  1221  1252 D         : [Posix_connect Debug]Process eric.dodji.app :80
10-12 15:23:33.051  1221  1252 I System.out: [socket][/10.161.159.49:58041] connected
10-12 15:23:33.052  1221  1252 I System.out: [OkHttp] sendRequest>>
10-12 15:23:33.053  1221  1252 I System.out: [OkHttp] sendRequest<<
10-12 15:23:34.098  1221  1252 D MediaHTTPConnection: mTotalSize=-1
10-12 15:23:39.607  1221  1221 D MediaPlayer: setSubtitleAnchor in MediaPlayer
10-12 15:23:39.652  1221  1221 D MediaPlayer: handleMessage msg:(1, 0, 0)
10-12 15:23:39.697  1221  1261 D OpenGLRenderer: CacheTexture 12 upload: x, y, width height = 0, 0, 1024, 504
10-12 15:23:39.713  1221  1316 E MediaPlayer: prepareAsync called in state 8, mPlayer(0xabb9c7e0)
10-12 15:23:39.737  1221  1316 D TestBackgroundMusic: [Task Thread] 0:0:12,653 - Exception: java.lang.IllegalStateException - null
10-12 15:23:39.738  1221  1316 W System.err: java.lang.IllegalStateException
10-12 15:23:39.754  1221  1316 W System.err: at android.media.MediaPlayer.prepareAsync(Native Method)
10-12 15:23:39.754  1221  1316 W System.err: at com.codename1.media.AudioService$a.q_(AudioService.java:232)
10-12 15:23:39.754  1221  1316 W System.err: at com.codename1.media.d.q_(MediaProxy.java:53)
10-12 15:23:39.754  1221  1316 W System.err: at eric.dodji.app.a.d(MyApplication.java:76)
10-12 15:23:39.754  1221  1316 W System.err: at eric.dodji.app.d.run(Unknown Source)
10-12 15:23:39.754  1221  1316 W System.err: at com.codename1.o.q$1.run(Display.java:740)
10-12 15:23:39.754  1221  1316 W System.err: at com.codename1.impl.b$1.run(CodenameOneThread.java:60)
10-12 15:23:39.754  1221  1316 W System.err: at java.lang.Thread.run(Thread.java:761)
10-12 15:23:40.818  1221  1261 D OpenGLRenderer: CacheTexture 12 upload: x, y, width height = 0, 74, 1024, 73
10-12 15:23:40.834  1221  1261 D OpenGLRenderer: CacheTexture 12 upload: x, y, width height = 0, 388, 1024, 38
10-12 15:23:40.869  1221  1261 D OpenGLRenderer: CacheTexture 12 upload: x, y, width height = 0, 73, 1024, 417
10-12 15:23:40.884  1221  1261 D OpenGLRenderer: CacheTexture 12 upload: x, y, width height = 0, 425, 1024, 37
10-12 15:23:40.983  1221  1261 D OpenGLRenderer: CacheTexture 12 upload: x, y, width height = 0, 0, 1024, 39
10-12 15:23:40.999  1221  1261 D OpenGLRenderer: CacheTexture 12 upload: x, y, width height = 0, 83, 1024, 37
10-12 15:23:41.540  1221  1261 D OpenGLRenderer: ProgramCache.generateProgram: 34359738369
10-12 15:23:41.541  1221  1261 D OpenGLRenderer: ProgramCache.generateProgram: 34359738368
10-12 15:23:44.570  1340  1340 W EDT     : type=1400 audit(0.0:1357): avc: denied { search } for name="bin" dev="mmcblk0p20" ino=228481 scontext=u:r:untrusted_app:s0:c512,c768 tcontext=u:object_r:wland_data_file:s0 tclass=dir permissive=0
10-12 15:23:44.594  1221  1221 D ActivityThread: SVC-Calling onStartCommand: com.codename1.media.AudioService@690d800, flags=0, startId=2
10-12 15:23:44.599  1221  1221 D CN1     : http://live2.vestaradio.com/RSL
10-12 15:23:44.599  1221  1221 W MediaPlayer: Couldn't open http://live2.vestaradio.com/RSL: java.io.FileNotFoundException: No content provider: http://live2.vestaradio.com/RSL
10-12 15:23:44.600  1221  1221 D MPlugin : com.mediatek.common.media.IOmaSettingHelperClazz exists on mapping table : true
10-12 15:23:44.600  1221  1221 V MPlugin : Get cached path class loader (/vendor/plugin/FwkPlugin/FwkPlugin.apk)
10-12 15:23:44.600  1221  1221 D MPlugin : Load class : com.mediatek.op.media.DefaultOmaSettingHelper successfullyPathClassLoader :dalvik.system.PathClassLoader[DexPathList[[zip file "/vendor/plugin/FwkPlugin/FwkPlugin.apk"],nativeLibraryDirectories=[/system/lib, /vendor/lib, /system/vendor/lib]]]
10-12 15:23:44.601  1221  1221 D MPlugin : Exception occurs when using constructor with Context
10-12 15:23:44.601  1221  1221 V DefaultOmaSettingHelper: setSettingHeader: with uri=http://live2.vestaradio.com/RSL
10-12 15:23:44.601  1221  1221 V DefaultOmaSettingHelper: isOMAEnabled: enabled=true
10-12 15:23:44.601  1221  1221 I DefaultOmaSettingHelper: setOmaSettingHeader(com.codename1.media.AudioService@690d800,null)
10-12 15:23:44.602  1221  1221 V DefaultOmaSettingHelper: setOmaSettingHeader: params:minUdpPort=1024minUdpPort=1024maxUdpPort=65535rtspProxyEnable=0rtspProxyHost=nullrtspProxyPort=-1httpProxyEnable=0httpProxyHost=nullhttpProxyPort=-1httpBufferSize=10rtspBufferSize=4
10-12 15:23:44.606  1221  1221 D MediaPlayer: Don't notify duration to eric.dodji.app!
-----------主程序的开头
10-12 15:23:28.555 1221 1261 D OpenGLRenderer:ProgramCache.generateProgram:103079215104
10-12 15:23:28.570 1319 1319 W EDT:type=1400 audit(0.0:1356):avc:denied{search}for name=“bin”dev=“mmcblk0p20”ino=228481 scontext=u:r:untrusted_app:s0:c512,c768tcontext=u:object\r:wland_数据文件:s0 tclass=dir permissive=0
---------系统开始
10-12 15:23:28.597 1221 1221 V ActivityThread:SVC正在创建服务CreateServiceData{token=android.os。BinderProxy@1e4de83className=com.codename1.media.AudioService packageName=eric.dodji.app intent=null}
10-12 15:23:28.597 1221 1221 D CN1:onCreate
10-12 15:23:28.599 1221 1221 D活动线程:SVC调用启动命令:com.codename1.media。AudioService@690d800,flags=0,startId=1
10-12 15:23:28.61616 1221 1221 D CN1:http://live2.vestaradio.com/RSL
10-12 15:23:28.618 1221 1221 W MediaPlayer:无法打开http://live2.vestaradio.com/RSL: java.io.FileNotFoundException:无内容提供程序:http://live2.vestaradio.com/RSL
10-12 15:23:28.621 1221 1221 D MPlugin:com.mediatek.common.media.IOmaSettingHelperClazz在映射表中存在:true
10-12 15:23:28.621 1221 1221 V MPlugin:创建新的路径类加载器(/vendor/plugin/FwkPlugin/FwkPlugin.apk)
10-12 15:23:28.632 1221 1221 D MPlugin:Load class:com.mediatek.op.media.DefaultOMAssettingHelper成功路径类加载器:dalvik.system.PathClassLoader[dexpath列表[[zip文件”/vendor/plugin/FwkPlugin/FwkPlugin.apk],NativelLibrary目录=[/system/lib,/vendor/lib,/system/vendor/lib]]
10-12 15:23:28.638 1221 1221 W系统:类加载器引用的未知路径:/data/app lib/FwkPlugin
10-12 15:23:28.646 1221 1221 D MPlugin:将构造函数与上下文一起使用时发生异常
10-12 15:23:28.647 1221 1221 V DefaultOMSettingHelper:setSettingHeader:带uri=http://live2.vestaradio.com/RSL
10-12 15:23:28.648 1221 1221 V DefaultOMSettingHelper:Isomanabled:enabled=true
10-12 15:23:28.648 1221 1221 I DefaultOmaSettingHelper:setOmaSettingHeader(com.codename1.media)。AudioService@690d800,空)
10-12 15:23:28.651 1221 1221 V DefaultOmaSettingHelper:setOmaSettingHeader:params:MinudPort=1024MinudPort=1024maxUdpPort=65535rtspProxyEnable=0rtspProxyHost=nullrtspProxyPort=-1httpProxyEnable=0httpProxyHost=nullhttpProxyPort=-1httpBufferSize=10rtspBufferSize=4
10-12 15:23:28.670 1221 1221 D MediaPlayer:不要向eric.dodji.app通知持续时间!
10-12 15:23:28.683 1221 1297 D MediaHttp连接:断开完成
10-12 15:23:28.695 1221 1252 D网络安全配置:未指定网络安全配置,使用平台默认设置
10-12 15:23:30.364 1221 1252 D libc netbsd:getaddrinfo:live2.vestaradio.com从代理获取结果gai_error=0
10-12 15:23:30.365 1221 1252 I System.out:[socket][0]connection live2.vestaradio.com/149.202.186.135:80;LocalPort=-1(30000)
10-12 15:23:30.366 1221 1252 D:[Posix_connect Debug]进程eric.dodji.app:80
10-12 15:23:33.051 1221 1252 I系统输出:[插座][/10.161.159.49:58041]已连接
10-12 15:23:33.052 1221 1252 I System.out:[OkHttp]发送请求>>

10-12 15:23:33.053 1221 1252 I System.out:[OkHttp]sendRequest您需要为该方法使用文件URL
jar:
URL只在浏览器上工作。这样(未经测试)的方法通常应该有效(假设静态CN导入):


嗨,谢,这个答案不是我需要的。我认为createBackgroundMedia()方法中存在错误或回归。你必须检查和测试我的例子。它与模拟器配合良好,但在设备上不起作用。相同的示例不适用于URL。我需要将其与URL一起使用,而不是与本地文件一起使用。这两种方法在使用此方法的设备上都不起作用。这就是为什么我说的是一个回归或一个bug。jar URL不应该工作,所以如果它在模拟器上工作,它就无关紧要了。这可能是一个实现细节。根据您提交的数据,后台媒体应使用HTTP/HTTPS URL。如果没有,请使用https URL的日志更新您的问题。请尝试将日志作为代码块放置,以便更具可读性。然后在这里发表评论,通知我更新的消息。我更新了日志并格式化了它,这样你就可以阅读了。我使用网络广播流URL。根据日志,createBackgroundMedia()方法必须知道要播放的内容的持续时间。这是问题的原因吗?我不知道。检查日志并告诉我。谢谢我不确定无线流媒体与这些API的配合效果如何。如果您使用前台播放API,它是否有效?在这种情况下,它可能是后台媒体API的一个限制,您可以在该测试用例中提交一个问题,我们将调查这在Android中是否可行
String fileName = getAppHomePath() + "music.mp3";
try(InputStream in = getResourceAsStream("/music.mp3"),
      OutputStream o = openFileOutputStream(fileName)) {
   Util.copy(in, o);
   Media audio = MediaManager.createBackgroundMedia(fileName);
   audio.play();
} catch(IOException e) {
    Log.e(e);
    // ... handle error
}