donglulong0877 2019-04-19 09:24
浏览 34

使用volley在“isImage”和“isVideo”字段的服务器后端问题存储图像和视频?

I am successfully taking the camera photo and then video, now when i am sending it on the server, nothing is happening?

How to send the key and value to php-mysql server?

I am getting username, email and branch_id stored but not the image and video because i don't know what and where should i code.

I have already tried below but confused: https://www.androidhive.info/2014/12/android-uploading-camera-image-video-to-server-with-progress-bar/

Please check below classes RegistrationImageActivity.java & RegistrationVideoActivity.java.

RegistrationSelfieActivity.java

import android.Manifest;
import android.content.ContentValues;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Bundle;
import android.os.StrictMode;
import android.provider.MediaStore;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.Toast;

import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;

import com.maxmoney.branchattendance.model.MultipartUtility;
import com.maxmoney.branchattendance.utilities.StandardProgressDialog;

import java.io.File;
import java.io.IOException;

public class RegistrationSelfieActivity extends AppCompatActivity {

    // LogCat tag
    private static final String TAG = RegistrationSelfieActivity.class.getSimpleName();
    private StandardProgressDialog mProgressDialog;

    // Camera activity request codes
    private static final int CAMERA_CAPTURE_IMAGE_REQUEST_CODE = 100;

    public static final int MEDIA_TYPE_IMAGE = 1;

    private Uri fileUri; // file url to store image/video

    private Button mContinue;

    private ImageView imageCaptureSelfie;

    String email, password, branch_id;

    String image_file = "";

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.register_selfie_activity);

        StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
        StrictMode.setThreadPolicy(policy);
        mProgressDialog = new StandardProgressDialog(this.getWindow().getContext());

        email = getIntent().getStringExtra("email");
        password = getIntent().getStringExtra("password");
        branch_id = getIntent().getStringExtra("branch_id");

        ActivityCompat.requestPermissions(this, new String[]{
                Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.CAMERA
        }, 1);

        imageCaptureSelfie = findViewById(R.id.imageView);

        imageCaptureSelfie.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                imageCaptureSelfie.setVisibility(View.GONE);
                captureImage();
                imageCaptureSelfie.setVisibility(View.VISIBLE);
            }
        });

        mContinue = findViewById(R.id.continue_next_selfie);
        mContinue.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                if (fileUri == null) {
                    Toast.makeText(getApplicationContext(), "Take Picture first", Toast.LENGTH_LONG).show();
                } else {
                    try {
                        testfirst();

                        Intent intent = new Intent(RegistrationSelfieActivity.this, RegistrationVideoActivity.class);
                        intent.putExtra("email", email);
                        intent.putExtra("password", password);
                        intent.putExtra("branch_id", branch_id);
                        intent.putExtra("username", email);

                        startActivity(intent);
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }
        });

        // Checking camera availability
        if (!isDeviceSupportCamera()) {
            Toast.makeText(getApplicationContext(), "Sorry! Your device doesn't support camera", Toast.LENGTH_LONG).show();
            // will close the app if the device does't have camera
            finish();
        }
    }

    private void testfirst() throws IOException {

        String charset = "UTF-8";
        String requestURL = "https://www.maxmoney.com/my/app/android/brachattendence/registration.php";
        MultipartUtility multipart = new MultipartUtility(requestURL, charset);

        multipart.addFormField("email", email);
        multipart.addFormField("password", password);
        multipart.addFormField("branch_id", branch_id);
        multipart.addFormField("username", email);

        File imageFile = new File(getPath(fileUri));
        multipart.addFilePart("imageFile", imageFile);

        String response = String.valueOf(multipart.finish());
        mProgressDialog.show();

        Log.d("response", response);

        /*  try {
              JSONArray obj = new JSONArray(response);
              if(obj.getString(Integer.parseInt("status")).equals("true")){
                  Toast.makeText(getApplicationContext(), obj.getString(Integer.parseInt("message")), Toast.LENGTH_SHORT)
                          .show();
              }else{
                  Toast.makeText(getApplicationContext(), obj.getString(Integer.parseInt("message")), Toast.LENGTH_SHORT)
                          .show();
              }
          } catch (JSONException e) {
              e.printStackTrace();
        } */
    }

    /**
     * Checking device has camera hardware or not
     */
    private boolean isDeviceSupportCamera() {
        if (getApplicationContext().getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA)) {
            // this device has a camera
            return true;
        } else {
            // no camera on this device
            return false;
        }
    }

    private void captureImage() {
        Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        ContentValues values = new ContentValues(1);
        values.put(MediaStore.Images.Media.MIME_TYPE, "varun.jpg");

        fileUri = getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
        intent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri);
        startActivityForResult(intent, CAMERA_CAPTURE_IMAGE_REQUEST_CODE);
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (requestCode == CAMERA_CAPTURE_IMAGE_REQUEST_CODE) {
            if (resultCode == RESULT_OK) {
                try {
                    Bitmap varunBITMAP = MediaStore.Images.Media.getBitmap(this.getContentResolver(), fileUri);
                    imageCaptureSelfie.setImageBitmap(varunBITMAP);
                } catch (IOException e) {
                    e.printStackTrace();
                }
            } else if (resultCode == RESULT_CANCELED) {
                Toast.makeText(getApplicationContext(), "User cancelled image capture", Toast.LENGTH_SHORT).show();
            } else {
                // failed to capture image
                Toast.makeText(getApplicationContext(), "Sorry! Failed to capture image", Toast.LENGTH_SHORT).show();
            }
        }
    }

    public String getPath(Uri uri) {

        String[] projection = {MediaStore.Images.Media.DATA};

        Cursor cursor = getContentResolver().query(uri, projection, null, null, null);

        if (cursor == null) return null;
        int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
        cursor.moveToFirst();
        String s = cursor.getString(column_index);
        cursor.close();
        return s;
    }
}

The actual result should be storage of image and video on the server.

PHP fields (PARAMETERS):

username (String)
email (String)
password (String)
branch_id (JSON STRING)
videoFile (FILE)
imageFile (FILE)

RegistrationVideoActivity.class

package com.maxmoney.branchattendance;

import android.content.ContentValues;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.os.StrictMode;
import android.provider.MediaStore;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.Toast;

import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;

import com.maxmoney.branchattendance.model.MultipartUtility;

import java.io.File;
import java.io.IOException;

public class RegistrationVideoActivity extends AppCompatActivity {

    // LogCat tag
    private static final String TAG = RegistrationVideoActivity.class.getSimpleName();

    // Camera activity request codes
    private static final int CAMERA_CAPTURE_VIDEO_REQUEST_CODE = 200;

    public static final int MEDIA_TYPE_VIDEO = 2;

    private Uri fileUriVideo; // file url to store image/video

    private ImageView captureVideo;

    private String email, password, branch_id, imageFile;
    private Button upload;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.register_video_activity);

        StrictMode.VmPolicy.Builder builder = new StrictMode.VmPolicy.Builder();
        StrictMode.setVmPolicy(builder.build());

        email = getIntent().getStringExtra("email");
        password = getIntent().getStringExtra("password");
        branch_id = getIntent().getStringExtra("branch_id");

        // image or video path that is captured in previous activity
        imageFile = getIntent().getStringExtra("filePath");

        captureVideo = findViewById(R.id.videoView);
        captureVideo.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                recordVideo();
            }
        });

        upload = findViewById(R.id.continue_upload);
        upload.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (fileUriVideo == null) {
                    Toast.makeText(getApplicationContext(), "Take Video first", Toast.LENGTH_LONG).show();
                } else {
                    try {
                        videoTest();

                        Intent intent = new Intent(RegistrationVideoActivity.this, LoginActivity.class);
                        intent.putExtra("email", email);
                        intent.putExtra("password", password);
                        intent.putExtra("branch_id", branch_id);
                        intent.putExtra("username", email);
                        startActivity(intent);
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }
        });
        // Checking camera availability
        if (!isDeviceSupportCamera()) {
            Toast.makeText(getApplicationContext(), "Sorry! Your device doesn't support camera", Toast.LENGTH_LONG).show();
            // will close the app if the device does't have camera
            finish();
        }
    }

    private boolean isDeviceSupportCamera() {
        if (getApplicationContext().getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA)) {
            // this device has a camera
            return true;
        } else {
            // no camera on this device
            return false;
        }
    }

    //record video
    private void recordVideo() {
        Intent intent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
        ContentValues values = new ContentValues(1);
        values.put(MediaStore.Video.Media.MIME_TYPE, "amir.jpeg");
        fileUriVideo = getContentResolver().insert(MediaStore.Video.Media.EXTERNAL_CONTENT_URI, values);
        intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 1);
        intent.putExtra(MediaStore.EXTRA_OUTPUT, fileUriVideo); // set the video file
        startActivityForResult(intent, CAMERA_CAPTURE_VIDEO_REQUEST_CODE);
    }

    @Override
    protected void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        outState.putParcelable("file_uri", fileUriVideo);
    }

    @Override
    protected void onRestoreInstanceState(Bundle savedInstanceState) {
        super.onRestoreInstanceState(savedInstanceState);
        // get the file url
        fileUriVideo = savedInstanceState.getParcelable("file_uri");
    }

    /**
     * Receiving activity result method will be called after closing the camera
     */
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (requestCode == CAMERA_CAPTURE_VIDEO_REQUEST_CODE) {
            if (resultCode == RESULT_OK) {

                Uri videoUri = data.getData();

                if (requestCode == CAMERA_CAPTURE_VIDEO_REQUEST_CODE) {
                    if (resultCode == RESULT_OK) {
                        Toast.makeText(this, "Video saved to:
" + videoUri, Toast.LENGTH_LONG).show();
                    } else if (resultCode == RESULT_CANCELED) {
                        Toast.makeText(this, "Video recording cancelled.", Toast.LENGTH_LONG).show();
                    } else {
                        Toast.makeText(this, "Failed to record video", Toast.LENGTH_LONG).show();
                    }
                }
            } else if (resultCode == RESULT_CANCELED) {
                Toast.makeText(getApplicationContext(), "User cancelled video capture", Toast.LENGTH_SHORT).show();
            } else {
                // failed to capture image
                Toast.makeText(getApplicationContext(), "Sorry! Failed to video image", Toast.LENGTH_SHORT).show();
            }
        }
    }

    private void videoTest() throws IOException {

        String charset = "UTF-8";
        String requestURL = "https://www.maxmoney.com/my/app/android/brachattendence/registration.php";

        MultipartUtility multipart = new MultipartUtility(requestURL, charset);

        multipart.addFormField("email", email);
        multipart.addFormField("password", password);
        multipart.addFormField("branch_id", branch_id);
        multipart.addFormField("username", email);

        File mediaFile = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/myvideo.mp4");

        Intent intent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);

        Uri videoUri = Uri.fromFile(mediaFile);

        intent.putExtra(MediaStore.EXTRA_OUTPUT, videoUri);
        startActivityForResult(intent, CAMERA_CAPTURE_VIDEO_REQUEST_CODE);
        // mProgressDialog.show();
        String response = String.valueOf(multipart.finish());

        Log.d("response", response);
        Toast.makeText(getApplicationContext(), "Success", Toast.LENGTH_SHORT).show();

        /*  try {
                JSONArray obj = new JSONArray(response);
                if(obj.getString(Integer.parseInt("status")).equals("true")){
                    Toast.makeText(getApplicationContext(), obj.getString(Integer.parseInt("message")), Toast.LENGTH_SHORT)
                            .show();
                }else{
                    Toast.makeText(getApplicationContext(), obj.getString(Integer.parseInt("message")), Toast.LENGTH_SHORT)
                            .show();
                }
            } catch (JSONException e) {
                e.printStackTrace();
            }
      */
    }

    public String getPathVideo(Uri uri) {
        String[] projection = {MediaStore.Video.Media.DATA};
        Cursor cursor = getContentResolver().query(uri, projection, null, null, null);
        if (cursor == null) return null;
        int column_index = cursor.getColumnIndexOrThrow(MediaStore.Video.Media.DATA);
        cursor.moveToFirst();
        String s = cursor.getString(column_index);
        cursor.close();
        return s;
    }
}
  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥20 有关区间dp的问题求解
    • ¥15 多电路系统共用电源的串扰问题
    • ¥15 slam rangenet++配置
    • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
    • ¥15 对于相关问题的求解与代码
    • ¥15 ubuntu子系统密码忘记
    • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
    • ¥15 保护模式-系统加载-段寄存器
    • ¥15 电脑桌面设定一个区域禁止鼠标操作
    • ¥15 求NPF226060磁芯的详细资料