コントロールを表示せずにビデオをフルスクリーンで再生する必要があります。これを行うためのカスタム アクティビティを作成しました。動作していましたが、何かが変更され、finish() しようとするとクラッシュします。
Javascript 呼び出し:
jiPlayVideo.PlayVideo('/sdcard/download/V2.3gp');
Javascript コールバック コード:
public class JavascriptInterface {
//private WebView mAppView;
private MainActivity mGap;
public JavascriptInterface(MainActivity gap, WebView view)
{
mGap = gap;
}
public String PlayVideo(String myURL){
Intent intent = new Intent(mGap, VideoActivity.class);
Bundle b = new Bundle();
b.putString("myURL", myURL);
intent.putExtras(b); //Put your id to your next Intent
startActivity(intent);
return("");
}
}
カスタム アクティビティ:
package com.RGi.SynchedIn;
import org.apache.cordova.DroidGap;
import com.RGi.SynchedIn.MainActivity.JavascriptInterface;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.webkit.WebView;
import android.widget.VideoView;
public class VideoActivity extends DroidGap {
public static VideoActivity theVideoActivity;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
super.init();
theVideoActivity = this;
setContentView(R.layout.videoview);
VideoView v = (VideoView) findViewById(R.id.video);
Bundle b = getIntent().getExtras();
String myFolder = b.getString("myURL");
v.setVideoPath(myFolder);
v.start();
v.setOnCompletionListener(mCompletionListener);
}
private MediaPlayer.OnCompletionListener mCompletionListener =
new MediaPlayer.OnCompletionListener() {
public void onCompletion(MediaPlayer mp) {
finish();
}
};
@Override
public void onStart() {
super.onStart();
}
@Override
public void onResume() {
super.onResume();
}
@Override
public void onPause() {
super.onPause();
}
@Override
public void onStop() {
super.onStop();
}
@Override
public void onDestroy() {
super.onDestroy();
}
}
私が得ているエラーは次のとおりです。
01-23 16:01:56.584: E/AndroidRuntime(7486): FATAL EXCEPTION: main
01-23 16:01:56.584: E/AndroidRuntime(7486): java.lang.RuntimeException: Unable to pause activity {com.RGi.SynchedIn/com.RGi.SynchedIn.VideoActivity}: java.lang.NullPointerException
01-23 16:01:56.584: E/AndroidRuntime(7486): at android.app.ActivityThread.performPauseActivity(ActivityThread.java:2358)
01-23 16:01:56.584: E/AndroidRuntime(7486): at android.app.ActivityThread.performPauseActivity(ActivityThread.java:2315)
01-23 16:01:56.584: E/AndroidRuntime(7486): at android.app.ActivityThread.handlePauseActivity(ActivityThread.java:2295)
01-23 16:01:56.584: E/AndroidRuntime(7486): at android.app.ActivityThread.access$1700(ActivityThread.java:117)
01-23 16:01:56.584: E/AndroidRuntime(7486): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:946)
01-23 16:01:56.584: E/AndroidRuntime(7486): at android.os.Handler.dispatchMessage(Handler.java:99)
01-23 16:01:56.584: E/AndroidRuntime(7486): at android.os.Looper.loop(Looper.java:130)
01-23 16:01:56.584: E/AndroidRuntime(7486): at android.app.ActivityThread.main(ActivityThread.java:3687)
01-23 16:01:56.584: E/AndroidRuntime(7486): at java.lang.reflect.Method.invokeNative(Native Method)
01-23 16:01:56.584: E/AndroidRuntime(7486): at java.lang.reflect.Method.invoke(Method.java:507)
01-23 16:01:56.584: E/AndroidRuntime(7486): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:842)
01-23 16:01:56.584: E/AndroidRuntime(7486): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
01-23 16:01:56.584: E/AndroidRuntime(7486): at dalvik.system.NativeStart.main(Native Method)
01-23 16:01:56.584: E/AndroidRuntime(7486): Caused by: java.lang.NullPointerException
01-23 16:01:56.584: E/AndroidRuntime(7486): at java.lang.String.indexOf(String.java:1145)
01-23 16:01:56.584: E/AndroidRuntime(7486): at org.apache.cordova.CordovaWebView.loadUrlNow(CordovaWebView.java:507)
01-23 16:01:56.584: E/AndroidRuntime(7486): at org.apache.cordova.CordovaWebView.loadUrl(CordovaWebView.java:392)
01-23 16:01:56.584: E/AndroidRuntime(7486): at org.apache.cordova.CordovaWebView.handlePause(CordovaWebView.java:907)
01-23 16:01:56.584: E/AndroidRuntime(7486): at org.apache.cordova.DroidGap.onPause(DroidGap.java:632)
01-23 16:01:56.584: E/AndroidRuntime(7486): at com.RGi.SynchedIn.VideoActivity.onPause(VideoActivity.java:59)
01-23 16:01:56.584: E/AndroidRuntime(7486): at android.app.Activity.performPause(Activity.java:3851)
01-23 16:01:56.584: E/AndroidRuntime(7486): at android.app.Instrumentation.callActivityOnPause(Instrumentation.java:1191)
01-23 16:01:56.584: E/AndroidRuntime(7486): at android.app.ActivityThread.performPauseActivity(ActivityThread.java:2345)
01-23 16:01:56.584: E/AndroidRuntime(7486): ... 12 more
ここで何が欠けていますか。これは非常に単純なアクティビティのように見えますが、毎回 super.onPause に失敗します。また、OnCompletionListener() の仕上げを削除して戻るボタンを使用すると、同じエラーが発生します。
ありがとう