Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将映像保存到外部数据库服务器_Java_Android_Camera - Fatal编程技术网

Java 将映像保存到外部数据库服务器

Java 将映像保存到外部数据库服务器,java,android,camera,Java,Android,Camera,我正在构建一个摄像头应用程序,它可以拍摄一张照片并将其保存到外部数据库中。当前代码适用于SD卡,但我不想使用SD卡。谁能告诉我如何将代码保存到外部数据库。任何帮助都将不胜感激 我认为这一部分: //make picture and save to a folder private static File getOutputMediaFile() { //make a new file directory inside the "sdcard" folder

我正在构建一个摄像头应用程序,它可以拍摄一张照片并将其保存到外部数据库中。当前代码适用于SD卡,但我不想使用SD卡。谁能告诉我如何将代码保存到外部数据库。任何帮助都将不胜感激

我认为这一部分:

//make picture and save to a folder
    private static File getOutputMediaFile() {
        //make a new file directory inside the "sdcard" folder
        File mediaStorageDir = new File("/sdcard/", "JCG Camera");

        //if this "JCGCamera folder does not exist
        if (!mediaStorageDir.exists()) {
            //if you cannot make this folder return
            if (!mediaStorageDir.mkdirs()) {
                return null;
            }
        }
这是我可能需要改变的地方。但我可能完全错了。我是新手,所以请原谅我。提前谢谢你的帮助

我的班级:

public class AndroidCameraExample extends Activity {
    private Camera mCamera;
    private CameraPreview mPreview;
    private PictureCallback mPicture;
    private Button capture, switchCamera;
    private Context myContext;
    private LinearLayout cameraPreview;
    private boolean cameraFront = false;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
        myContext = this;
        initialize();
    }

    private int findFrontFacingCamera() {
        int cameraId = -1;
        // Search for the front facing camera
        int numberOfCameras = Camera.getNumberOfCameras();
        for (int i = 0; i < numberOfCameras; i++) {
            CameraInfo info = new CameraInfo();
            Camera.getCameraInfo(i, info);
            if (info.facing == CameraInfo.CAMERA_FACING_FRONT) {
                cameraId = i;
                cameraFront = true;
                break;
            }
        }
        return cameraId;
    }

    private int findBackFacingCamera() {
        int cameraId = -1;
        //Search for the back facing camera
        //get the number of cameras
        int numberOfCameras = Camera.getNumberOfCameras();
        //for every camera check
        for (int i = 0; i < numberOfCameras; i++) {
            CameraInfo info = new CameraInfo();
            Camera.getCameraInfo(i, info);
            if (info.facing == CameraInfo.CAMERA_FACING_BACK) {
                cameraId = i;
                cameraFront = false;
                break;
            }
        }
        return cameraId;
    }

    public void onResume() {
        super.onResume();
        if (!hasCamera(myContext)) {
            Toast toast = Toast.makeText(myContext, "Sorry, your phone does not have a camera!", Toast.LENGTH_LONG);
            toast.show();
            finish();
        }
        if (mCamera == null) {
            //if the front facing camera does not exist
            if (findFrontFacingCamera() < 0) {
                Toast.makeText(this, "No front facing camera found.", Toast.LENGTH_LONG).show();
                switchCamera.setVisibility(View.GONE);
            }
            mCamera = Camera.open(findBackFacingCamera());
            mPicture = getPictureCallback();
            mPreview.refreshCamera(mCamera);
        }
    }

    public void initialize() {
        cameraPreview = (LinearLayout) findViewById(R.id.camera_preview);
        mPreview = new CameraPreview(myContext, mCamera);
        cameraPreview.addView(mPreview);

        capture = (Button) findViewById(R.id.button_capture);
        capture.setOnClickListener(captrureListener);

        switchCamera = (Button) findViewById(R.id.button_ChangeCamera);
        switchCamera.setOnClickListener(switchCameraListener);
    }

    OnClickListener switchCameraListener = new OnClickListener() {
        @Override
        public void onClick(View v) {
            //get the number of cameras
            int camerasNumber = Camera.getNumberOfCameras();
            if (camerasNumber > 1) {
                //release the old camera instance
                //switch camera, from the front and the back and vice versa

                releaseCamera();
                chooseCamera();
            } else {
                Toast toast = Toast.makeText(myContext, "Sorry, your phone has only one camera!", Toast.LENGTH_LONG);
                toast.show();
            }
        }
    };

    public void chooseCamera() {
        //if the camera preview is the front
        if (cameraFront) {
            int cameraId = findBackFacingCamera();
            if (cameraId >= 0) {
                //open the backFacingCamera
                //set a picture callback
                //refresh the preview

                mCamera = Camera.open(cameraId);
                mPicture = getPictureCallback();
                mPreview.refreshCamera(mCamera);
            }
        } else {
            int cameraId = findFrontFacingCamera();
            if (cameraId >= 0) {
                //open the backFacingCamera
                //set a picture callback
                //refresh the preview

                mCamera = Camera.open(cameraId);
                mPicture = getPictureCallback();
                mPreview.refreshCamera(mCamera);
            }
        }
    }

    @Override
    protected void onPause() {
        super.onPause();
        //when on Pause, release camera in order to be used from other applications
        releaseCamera();
    }

    private boolean hasCamera(Context context) {
        //check if the device has camera
        if (context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA)) {
            return true;
        } else {
            return false;
        }
    }

    private PictureCallback getPictureCallback() {
        PictureCallback picture = new PictureCallback() {

            @Override
            public void onPictureTaken(byte[] data, Camera camera) {
                //make a new picture file
                File pictureFile = getOutputMediaFile();

                if (pictureFile == null) {
                    return;
                `enter code here`}
                try {
                    //write the file
                    FileOutputStream fos = new FileOutputStream(pictureFile);
                    fos.write(data);
                    fos.close();
                    Toast toast = Toast.makeText(myContext, "Picture saved: " + pictureFile.getName(), Toast.LENGTH_LONG);
                    toast.show();

                } catch (FileNotFoundException e) {
                } catch (IOException e) {
                }

                //refresh camera to continue preview
                mPreview.refreshCamera(mCamera);
            }
        };
        return picture;
    }

    OnClickListener captrureListener = new OnClickListener() {
        @Override
        public void onClick(View v) {
            mCamera.takePicture(null, null, mPicture);
        }
    };

    //make picture and save to a folder
    private static File getOutputMediaFile() {
        //make a new file directory inside the "sdcard" folder
        File mediaStorageDir = new File("/sdcard/", "JCG Camera");

        //if this "JCGCamera folder does not exist
        if (!mediaStorageDir.exists()) {
            //if you cannot make this folder return
            if (!mediaStorageDir.mkdirs()) {
                return null;
            }
        }

        //take the current timeStamp
        String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
        File mediaFile;
        //and make a media file:
        mediaFile = new File(mediaStorageDir.getPath() + File.separator + "IMG_" + timeStamp + ".jpg");

        return mediaFile;
    }

    private void releaseCamera() {
        // stop and release camera
        if (mCamera != null) {
            mCamera.release();
            mCamera = null;
        }
    }
}
公共类AndroidCameraExample扩展活动{
私人摄像机麦卡梅拉;
私人摄像审查;
私人图片回拨器;
私人按钮捕捉,切换摄像头;
私人语境;
私人线路布局审查;
私有布尔cameraFront=false;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getWindow().addFlags(WindowManager.LayoutParams.FLAG\u保持屏幕打开);
myContext=这个;
初始化();
}
专用int findFrontFacingCamera(){
int cameraId=-1;
//搜索前向摄像头
int numberOfCameras=Camera.getNumberOfCameras();
对于(int i=0;i1){
//释放旧的摄影机实例
//从前面和后面切换摄像头,反之亦然
松开摄像头();
chooseCamera();
}否则{
Toast Toast=Toast.makeText(myContext,“对不起,您的手机只有一个摄像头!”,Toast.LENGTH\u LONG);
toast.show();
}
}
};
公共无效选择卡美拉(){
//如果相机预览是正面的
如果(摄像头前部){
int-cameraId=findBackFacingCamera();
如果(cameraId>=0){
//打开背面摄像头
//设置图片回调
//刷新预览
mCamera=Camera.open(cameraId);
mPicture=getPictureCallback();
mPreview.refreshCamera(mCamera);
}
}否则{
int-cameraId=findFrontFacingCamera();
如果(cameraId>=0){
//打开背面摄像头
//设置图片回调
//刷新预览
mCamera=Camera.open(cameraId);
mPicture=getPictureCallback();
mPreview.refreshCamera(mCamera);
}
}
}
@凌驾
受保护的void onPause(){
super.onPause();
//启用“暂停”时,释放相机以便从其他应用程序中使用
松开摄像头();
}
专用布尔hasCamera(上下文){
//检查设备是否有摄像头
if(context.getPackageManager().hasSystemFeature(PackageManager.FEATURE\u摄像头)){
返回true;
}否则{
返回false;
}
}
私有PictureCallback getPictureCallback(){
PictureCallback picture=新建PictureCallback(){
@凌驾
公共void onPictureTaken(字节[]数据,摄像头){
//制作一个新的图片文件
File pictureFile=getOutputMediaFile();
如果(pictureFile==null){
返回;
`在此处输入代码`}
试一试{
//写文件
FileOutputStream fos=新的FileOutputStream(pictureFile);
写入(数据);
public int uploadFile(String sourceFileUri) {

                 String fileName = sourceFileUri;

                 HttpURLConnection conn = null;
                 DataOutputStream dos = null;  
                 String lineEnd = "\r\n";
                 String twoHyphens = "--";
                 String boundary = "*****";
                 int bytesRead, bytesAvailable, bufferSize;
                 byte[] buffer;
                 int maxBufferSize = 1 * 1024 * 1024; 
                 File sourceFile = new File(sourceFileUri); 

                 if (!sourceFile.isFile()) {
                      runOnUiThread(new Runnable() {
                          @Override
                        public void run() {
                             Toast.makeText(getBaseContext(), "Source File not exist :"+imagepath, Toast.LENGTH_LONG).show();
                          }
                      }); 
                      return 0;
                 }
                 else
                 {
                      try { 

                            // open a URL connection to the Servlet
                          FileInputStream fileInputStream = new FileInputStream(sourceFile);
                          String where = "SERVER_ADDRESS";
                          URL url = new URL(where);

                          // Open a HTTP  connection to  the URL
                          conn = (HttpURLConnection) url.openConnection(); 
                          conn.setDoInput(true); // Allow Inputs
                          conn.setDoOutput(true); // Allow Outputs
                          conn.setUseCaches(false); // Don't use a Cached Copy
                          conn.setRequestMethod("POST");
                          conn.setRequestProperty("Connection", "Keep-Alive");
                          conn.setRequestProperty("ENCTYPE", "multipart/form-data");
                          conn.setRequestProperty("Content-Type", "multipart/form-data;boundary=" + boundary);
                          conn.setRequestProperty("uploaded_file", fileName); 

                          dos = new DataOutputStream(conn.getOutputStream());

                          dos.writeBytes(twoHyphens + boundary + lineEnd); 
                          dos.writeBytes("Content-Disposition: form-data; name=\"uploaded_file\";filename=\""
                                                    + fileName + "\"" + lineEnd);

                          dos.writeBytes(lineEnd);

                          // create a buffer of  maximum size
                          bytesAvailable = fileInputStream.available(); 

                          bufferSize = Math.min(bytesAvailable, maxBufferSize);
                          buffer = new byte[bufferSize];

                          // read file and write it into form...
                          bytesRead = fileInputStream.read(buffer, 0, bufferSize);  

                          while (bytesRead > 0) {

                            dos.write(buffer, 0, bufferSize);
                            bytesAvailable = fileInputStream.available();
                            bufferSize = Math.min(bytesAvailable, maxBufferSize);
                            bytesRead = fileInputStream.read(buffer, 0, bufferSize);   

                           }

                          // send multipart form data necesssary after file data...
                          dos.writeBytes(lineEnd);
                          dos.writeBytes(twoHyphens + boundary + twoHyphens + lineEnd);

                          // Responses from the server (code and message)
                          serverResponseCode = conn.getResponseCode();
                          final String serverResponseMessage = conn.getResponseMessage();

                          Log.i("uploadFile", "HTTP Response is : "
                                  + serverResponseMessage + ": " + serverResponseCode);

                          if(serverResponseCode == 200){

                              runOnUiThread(new Runnable() {
                                   @Override
                                public void run() {

                                       String msg = "File Upload Completed.\n\n See uploaded file here : \n\n"
                                             +"SERVER ADDRESS";
                                   }
                               });                
                          }    

                          //close the streams //
                          fileInputStream.close();
                          dos.flush();
                          dos.close();

                     } catch (MalformedURLException ex) {

                         //dialog.dismiss();  
                         ex.printStackTrace();

                         runOnUiThread(new Runnable() {
                             @Override
                            public void run() {
                                 Toast.makeText(CLASS_NAME.this, "MalformedURLException", Toast.LENGTH_SHORT).show();
                             }
                         });

                         Log.e("Upload file to server", "error: " + ex.getMessage(), ex);  
                     } catch (Exception e) {

                         //dialog.dismiss();  
                         e.printStackTrace();

                         runOnUiThread(new Runnable() {
                             @Override
                            public void run() {
                                 Toast.makeText(CLASS_NAME.this, "Got Exception : see logcat ", Toast.LENGTH_SHORT).show();
                             }
                         });
                         Log.e("Upload file to server Exception", "Exception : "  + e.getMessage(), e);  
                     }
                    // dialog.dismiss();       
                     return serverResponseCode; 

                  } // End else 
uploadFile(imagepath);
<?php

   $file_path = "uploads/";

   $file_path = $file_path . basename( $_FILES['uploaded_file']['name']);
    echo $_FILES['uploaded_file']['name'];
   if(move_uploaded_file($_FILES['uploaded_file']['tmp_name'], $file_path)) {
       echo "success";
   } else{
       echo "fail"; 
   }

?>