gpt4 book ai didi

java - 从 Cordova 插件在服务中启动 Vitamio

转载 作者:行者123 更新时间:2023-12-03 01:56:34 24 4
gpt4 key购买 nike

大约一周后……我想是时候问问 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()。我也有一个停止方法。一旦我开始工作,我想尝试将 andriod mediaplayer 类与 Vitamio 类交换。

我做了以下 https://github.com/yixia/VitamioBundle/wiki/Getting-Started

他们有四个简单的指示,第四个是..
“现在您可以使用与 Android Media API 相同的 Vitamio Media API”...??..um..no

将所有文件放在正确的位置,并且 list 具有正确的 Activity 和服务声明,但是在编译我的应用程序后在 lauch 上崩溃。

第 3 步是我无法调用的问题
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)

主要问题是如果在 Activity 中使用它,我不会被迫使用界面吗?

我只想在后台流式传输音频,而用户可以导航我的应用程序并使用 BroadcastReceiver Intent 停止、暂停、seekTo...等从插件到服务或返回位置或播放器状态。

有人可以帮忙吗??

基本上我想在没有寡妇、小部件、播放器界面等的情况下使用 vitamio,我将通过 cordova 插件控制它。我怎样才能以这种方式使用维生素......任何帮助都会很棒。

Vitamio-Cor dova-Plugin 工作得很好,可以播放通常使用 native MediaPlayer 无法正常工作的 HLS 流......但我只想播放音频......我注释掉了所有接口(interface)代码,但我仍然得到一个不可见的在我点击后退按钮之前阻止我使用我的应用程序的窗口。我不想只使用 ndroid:theme="@android:style/Theme.NoDisplay"并修改播放器应该作为服务运行的插件......无论如何这对于音频播放器来说都是正确的方法。再次感谢您的帮助,我已经尽我所能尽我所能,但最后我请求您的帮助。

最佳答案

哇。不敢相信我在日志中错过了这个。

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

所以简而言之,如果您使用的是 Cordova,请执行此操作..

  • 将 vitamio init 添加到您的 MainActivity 应该如下所示
    import io.vov.vitamio.LibsChecker; //don't forget to import this!
      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);
    }
    }
  • 确保您的 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>
  • 在你的 android list 中......
    <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" />

  • 您现在应该可以像往常一样使用 vitamio Media 类了。
    在某个时候,我将为此编写一个教程,以防止人们发疯:}

    顺便说一句,确保您也安装了 vitamio 库,您可以查看 https://github.com/nchutchind/Vitamio-Cordova-Plugin看看他是怎么做到的……这就是我所做的。顺便说一句,很棒的插件。

    关于java - 从 Cordova 插件在服务中启动 Vitamio,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35122171/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com