我使用Cordova plugin播放VR视频文件,并通过GoogleVRPlayer.playVideo(videoUrl, fallbackVideoUrl)
调用。
插件的.java文件中的某处,有:
@Override
public void onLoadError(String errorMessage) {
// I want to know if this function is executed
Log.e(TAG, "Error loading video: " + errorMessage);
}
基本上,当视频无法加载时,我想在我的javascript中将一个变量设置为"错误",例如var video_status = "error"
,所以我可以稍后使用此信息我的应用。
我找到了一些可能解决我问题的答案,但我似乎无法以正确的方式整合它。我对本机插件和Java的经验很少。
有谁可以帮我解决这个问题?
答案 0 :(得分:1)
由于Cordova插件GoogleVRPlayer
启动了一个新的Activity(VrVideoActivity
),我将使用Singleton类作为两个Activites之间的插页式数据桥来保存错误消息。
这是因为,在启动视频播放器活动时,您的应用程序(Cordova活动)将在后台暂停,并且只有在视频播放器活动关闭后才会恢复执行。
通过使用中间类,Cordova插件和视频活动都能够共享数据。
所以我会做这样的事情:
在CordovaBridge.java
cordova-vr-player/src/android/java/neotrino/
的新文件
package com.neotrino;
public class CordovaBridge {
private String errorMsg = null;
public String getErrorMsg() {return errorMsg;}
public void setErrorMsg(String errorMsg) {this.errorMsg = errorMsg;}
private static final CordovaBridge holder = new CordovaBridge();
public static CordovaBridge getInstance() {return holder;}
}
修改GoogleVRPlayer.java
,如下所示:
import com.neotrino.CordovaBridge;
@Override
public void onResume(boolean multitasking) {
cordova.getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
String errorMsg = CordovaBridge.getInstance().getErrorMsg();
if(errorMsg != null){
webView.loadUrl("javascript:window.video_status = '"+errorMsg+"'");
}
}
});
}
修改VrVideoActivity.java
,如下所示:
import com.neotrino.CordovaBridge;
@Override
public void onLoadError(String errorMessage) {
// I want to know if this function is executed
Log.e(TAG, "Error loading video: " + errorMessage);
CordovaBridge.getInstance().setErrorMsg(errorMessage);
}
我还没有测试过上面的代码,但就某种方法而言,它应该为您提供一个基于解决方案的近似值。