Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/402.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从Cordova插件在服务中启动Vitamio_Java_Android_Cordova_Audio_Vitamio - Fatal编程技术网

Java 从Cordova插件在服务中启动Vitamio

Java 从Cordova插件在服务中启动Vitamio,java,android,cordova,audio,vitamio,Java,Android,Cordova,Audio,Vitamio,大约一周后……我想是时候问问SO社区了:) 现在我已经有了一个正在工作的插件,它已经做到了这一点 扩展CordovaPlugin的java文件: Intent objIntent = new Intent(cordovaObj.getActivity().getApplicationContext(), MY_SERVICE.class); //pass the url to the service objIntent.putExtra("mediaUrl", url); //Start t

大约一周后……我想是时候问问SO社区了:)

现在我已经有了一个正在工作的插件,它已经做到了这一点

扩展CordovaPlugin的java文件:

Intent objIntent = new Intent(cordovaObj.getActivity().getApplicationContext(), MY_SERVICE.class);

//pass the url to the service
objIntent.putExtra("mediaUrl", url);

//Start the service
cordovaObj.getActivity().getApplicationContext().startService(objIntent);
然后在服务的onCreate方法中,我安装androids native MediaPlayer类,并启动服务的onStartCommand()。我也有一个停止方法。一旦我开始工作,我想尝试用Vitamio的andriod mediaplayer类交换它

我做了以下几件事

他们有四条简单的指示,第四条是。。 “现在你可以使用和安卓媒体API一样的Vitamio媒体API了”……嗯……不

将所有文件放在正确的位置,manifes有适当的活动和服务声明,但在lauch上编译我的应用程序后崩溃

第三步是我的问题,我不能打电话

if (!io.vov.vitamio.LibsChecker.checkVitamioLibs(this))
在我的服务类中的onCreate方法中,我得到了一个错误。我试着把它放在我的MainActivity的onCreate中,但在启动时崩溃了

    LAUNCH SUCCESS
E/AndroidRuntime(23282): java.lang.RuntimeException: Unable to start activity ComponentInfo{biz.urassociation.app/biz.urassociation.app.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void org.apache.cordova.CordovaInterfaceImpl.setActivityResultRequestCode(int)' on a null object reference
E/AndroidRuntime(23282): Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void org.apache.cordova.CordovaInterfaceImpl.setActivityResultRequestCode(int)' on a null object reference
E/AndroidRuntime(23282):    at org.apache.cordova.CordovaActivity.startActivityForResult(CordovaActivity.java:331)
主要的问题是如果在活动中使用它,我不会被迫使用接口吗

我只想在后台播放音频,而用户可以浏览我的应用程序,并使用BroadcastReceiver意图从插件到服务或返回位置或播放器状态停止、暂停、搜索…等

有人能帮忙吗

基本上,我想使用vitamio,没有寡妇,小部件,播放器界面等,我会从cordova插件控制它。我怎样才能以这种方式使用vitamio…任何帮助都会很好


Vitamio Cor dova插件工作得很好,可以播放HLS流,这些流在使用本机MediaPlayer时通常无法正常工作……但我只想播放音频……我注释掉了所有界面代码,但我仍然会看到一个不可见的窗口,在我点击后退按钮之前,它会阻止我使用我的应用程序。我不想只使用ndroid:theme=“@android:style/theme.NoDisplay”并修改播放器应该作为服务运行的插件……无论如何,这对音频播放器来说都是正确的方式。再次感谢你的帮助,我已经尽了最大的努力,但最后我还是请求你的帮助。

哇。真不敢相信我在日志里漏掉了这个

我没有声明vitamio的初始化方法使用的必要字符串资源:/…位于res/values/strings.xml中…现在一切正常

因此,简而言之,如果您使用Cordova,请执行此操作

  • 将vitamio init添加到MainActivity中,如下所示

    导入io.vov.vitamio.LibsChecker//别忘了导入这个

      public class MainActivity extends CordovaActivity
      {
          @Override
          public void onCreate(Bundle savedInstanceState)
          {
              super.onCreate(savedInstanceState);
              if (!LibsChecker.checkVitamioLibs(this))
              return;
                  // Set by <content src="index.html" /> in config.xml
                  loadUrl(launchUrl);
           }
      }
    
    公共类MainActivity扩展了CordovaActivity
    {
    @凌驾
    创建时的公共void(Bundle savedInstanceState)
    {
    super.onCreate(savedInstanceState);
    如果(!LibsChecker.checkVitamioLibs(this))
    返回;
    //在config.xml中设置
    loadUrl(launchUrl);
    }
    }
    
  • 确保plugin.xml中包含所有字符串引用,如下所示

        <config-file target="res/values/strings.xml" parent="/resources">
        <string name="vitamio_library_app_name">VitamioLibrary</string>
        <string name="vitamio_init_decoders">Initializing decoders…</string>
        <string name="permission_group_tools_label">Vitamio tools</string>
        <string name="permission_group_tools_description">Access Vitamio package and resources.</string>
        <string name="permission_receive_messages_label">Receive Vitamio messages</string>
        <string name="permission_receive_messages_description">Receive all broadcasts from Vitamio service.</string>
        <string name="permission_write_providers_label">Write Vitamio providers</string>
        <string name="permission_write_providers_description">Delete, update or create new items in Vitamio providers.</string>
        <string name="VideoView_error_title">Cannot play video</string>
        <string name="VideoView_error_text_invalid_progressive_playback">Sorry, this video is not valid for streaming to this device.</string>
        <string name="VideoView_error_text_unknown">Sorry, this video cannot be played.</string>
        <string name="VideoView_error_button">OK</string>
        <string name="mediacontroller_play_pause">Play/Pause</string>
    </config-file>
    
    
    维塔米奥图书馆
    正在初始化解码器…
    维塔米奥工具
    访问Vitamio软件包和资源。
    接收Vitamio消息
    接收Vitamio服务的所有广播。
    写Vitamio提供者
    在Vitamio providers中删除、更新或创建新项目。
    无法播放视频
    很抱歉,此视频无法流式传输到此设备。
    抱歉,无法播放此视频。
    好啊
    播放/暫停
    
  • 在你的android清单中

    <activity android:name="io.vov.vitamio.activity.InitActivity" android:configChanges="orientation|screenSize|smallestScreenSize|keyboard|keyboardHidden" android:launchMode="singleTop" android:theme="@android:style/Theme.NoTitleBar" android:windowSoftInputMode="stateAlwaysHidden"/>
    
    <activity android:configChanges="orientation|keyboardHidden|navigation" android:launchMode="singleTop" android:name="io.vov.vitamio.activity.InitActivity" android:theme="@android:style/Theme.NoDisplay" android:windowSoftInputMode="stateAlwaysHidden" />
    
    看看他是怎么做的……我就是这么做的。伟大的插件顺便说一句