package org.bcsphere.camera; import java.io.Serializable; import org.apache.cordova.CallbackContext; import org.apache.cordova.CordovaPlugin; import org.apache.cordova.PluginResult; import org.apache.cordova.PluginResult.Status; import org.json.JSONArray; import org.json.JSONException; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; public class Camera extends CordovaPlugin implements Serializable{ /** * */ private static final long serialVersionUID = 1L; private static boolean isOpened = false; private CallbackContext onCameraClose; @Override public boolean execute(String action, JSONArray args,CallbackContext callbackContext) throws JSONException { try { if("takePicture".equals(action)){ String pictureMode = args.getJSONObject(0).getString("model"); if (pictureMode.equals("0")) { if (!isOpened) { Intent intent = new Intent(); intent.setClass(webView.getContext(),TakePictureAty.class); intent.putExtra("MODE", 0); webView.getContext().startActivity(intent); callbackContext.success(); } }else if (pictureMode.equals("1")) { if (!isOpened) { Intent intent = new Intent(); intent.setClass(webView.getContext(),TakePictureAty.class); intent.putExtra("MODE", 1); webView.getContext().startActivity(intent); }else { Intent intent = new Intent(); intent.setAction("TAKE_PICTURE"); webView.getContext().sendBroadcast(intent); } callbackContext.success(); } }else if("onCameraClose".equals(action)){ IntentFilter intentFilter = new IntentFilter(); intentFilter.addAction("ON_CAMERA_CLOSE"); webView.getContext().registerReceiver(receiver, intentFilter); onCameraClose = callbackContext; } } catch (Exception e) { callbackContext.error(e.getMessage()); } return true; } private BroadcastReceiver receiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { if("ON_CAMERA_CLOSE".equals(intent.getAction())){ if(onCameraClose!=null){ PluginResult result = new PluginResult(Status.OK); result.setKeepCallback(true); onCameraClose.sendPluginResult(result); } } } }; public static void setCameraState(boolean state){ isOpened = state; } }