从 Cordova 插件在服务中启动 Vitamio
Starting Vitamio In A Service From Cordova Plugin
大约一周后...我想是时候问问 SO 社区了:)
现在我已经有一个工作(正在进行中)的插件可以做到这一点。
java 扩展 CordovaPlugin 的文件:
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 本地 MediaPlayer class 和服务的 onStartCommand() 我启动播放器。我也有一个停止方法。一旦我开始工作,我想尝试将 andriod 媒体播放器 class 与 Vitamio 的媒体播放器交换。
我做了以下操作https://github.com/yixia/VitamioBundle/wiki/Getting-Started
他们有四个简单的说明,第 4 个是..
"Now you can use Vitamio Media API same as Android Media API"...??..嗯..没有
将所有文件放在正确的位置并且清单具有正确的活动和服务声明,但编译后我的应用程序在启动时崩溃。
第 3 步是我的问题,我无法调用
if (!io.vov.vitamio.LibsChecker.checkVitamioLibs(this))
在我服务的 onCreate 方法中 class 我得到了错误。我尝试将它放在我的 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 意图从插件到服务或 return 位置或播放器停止、暂停、seekTo...等州。
有人能帮忙吗??
基本上我想在没有寡妇、小部件、播放器界面等的情况下使用 vitamio 我将从 cordova 插件控制它。我怎样才能以这种方式使用 vitamio...任何帮助都会很棒。
Vitamio-Cor dova-Plugin 非常 可以播放 HLS 流,使用本机 MediaPlayer 通常无法正常工作...但我只想播放音频。 ..我注释掉了所有界面代码,但我仍然得到一个不可见的 window 阻止我使用我的应用程序,直到我点击后退按钮。我不想只使用 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 清单中...
<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 class。
在某个时候我会写一个教程来避免人们发疯:}
顺便说一句,显然要确保你也安装了 vitamio 库,你可以查看 https://github.com/nchutchind/Vitamio-Cordova-Plugin 看看他是怎么做到的……这就是我所做的。很棒的插件顺便说一句。
大约一周后...我想是时候问问 SO 社区了:)
现在我已经有一个工作(正在进行中)的插件可以做到这一点。
java 扩展 CordovaPlugin 的文件:
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 本地 MediaPlayer class 和服务的 onStartCommand() 我启动播放器。我也有一个停止方法。一旦我开始工作,我想尝试将 andriod 媒体播放器 class 与 Vitamio 的媒体播放器交换。
我做了以下操作https://github.com/yixia/VitamioBundle/wiki/Getting-Started
他们有四个简单的说明,第 4 个是.. "Now you can use Vitamio Media API same as Android Media API"...??..嗯..没有
将所有文件放在正确的位置并且清单具有正确的活动和服务声明,但编译后我的应用程序在启动时崩溃。
第 3 步是我的问题,我无法调用
if (!io.vov.vitamio.LibsChecker.checkVitamioLibs(this))
在我服务的 onCreate 方法中 class 我得到了错误。我尝试将它放在我的 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 意图从插件到服务或 return 位置或播放器停止、暂停、seekTo...等州。
有人能帮忙吗??
基本上我想在没有寡妇、小部件、播放器界面等的情况下使用 vitamio 我将从 cordova 插件控制它。我怎样才能以这种方式使用 vitamio...任何帮助都会很棒。
Vitamio-Cor dova-Plugin 非常 可以播放 HLS 流,使用本机 MediaPlayer 通常无法正常工作...但我只想播放音频。 ..我注释掉了所有界面代码,但我仍然得到一个不可见的 window 阻止我使用我的应用程序,直到我点击后退按钮。我不想只使用 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 清单中...
<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 class。 在某个时候我会写一个教程来避免人们发疯:}
顺便说一句,显然要确保你也安装了 vitamio 库,你可以查看 https://github.com/nchutchind/Vitamio-Cordova-Plugin 看看他是怎么做到的……这就是我所做的。很棒的插件顺便说一句。