Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/203.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 如何将视频URI转换为文件_Java_Android - Fatal编程技术网

Java 如何将视频URI转换为文件

Java 如何将视频URI转换为文件,java,android,Java,Android,嗨,我正在尝试将来自多媒体资料的视频uri转换为文件。我使用了下面的方法来获取文件 MainActivity.java-从多媒体资料中选择视频。 VideoUploadActivity.java将视频上载到Amazon S3 @覆盖 创建时受保护的void(Bundle savedInstanceState){ 试一试{ super.onCreate(savedInstanceState); setContentView(R.layout.activity\u video\u upload);

嗨,我正在尝试将来自多媒体资料的视频uri转换为文件。我使用了下面的方法来获取文件

MainActivity.java-从多媒体资料中选择视频。 VideoUploadActivity.java将视频上载到Amazon S3
@覆盖
创建时受保护的void(Bundle savedInstanceState){
试一试{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u video\u upload);
Intent=getIntent();
最终字符串imguribeforapse=intent.getStringExtra(“imgUri”);
imgUri=Uri.parse(imguribeforapse);
filePath=getFilePath(VideoUploadActivity.this,imgUri);
getFileVideo();
btn_photoupload_back=(ImageView)findviewbyd(R.id.btn_photoupload_back);
btn_photoupload_back.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
onBackPressed();
}
});
img_photoupload=(VideoView)findViewById(R.id.img_photoupload);
edt_photoupload=(SocialEditText)findViewById(R.id.edt_photoupload);
img_photoupload.setVideoURI(imgUri);
img_photoupload.setOnPreparedListener(新的MediaPlayer.OnPreparedListener(){
@凌驾
已准备好公开作废(MediaPlayer MediaPlayer){
MediaController mc=新的MediaController(VideoUploadActivity.this);
主持人:setAnchorView(图片上传);
mediaPlayer.start();
mediaPlayer.setLooping(true);
}
});
userNick=getIntent().getStringExtra(“userNick”);
profileURL=getIntent().getStringExtra(“用户配置文件”);
tv\u photoupload\u write=(TextView)findviewbyd(R.id.tv\u photoupload\u write);
tv\u photoupload\u write.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
if(edt_photoupload.getText().toString().equals(“”){
Toast.makeText(VideoUploadActivity.this)빈 칸 없이 채워주세요.", Toast.LENGTH_LONG).show();
返回;
}否则{
上传();
}
}
});
}捕获(例外e){
e、 printStackTrace();
}
}
public void uploadImage(){
如果(f==null){
Log.d(“视频上传活动”파일이 无效的임");
}否则{
如果(amazonS3!=null){
试一试{
PutObjectRequest por=新的PutObjectRequest(BUCKET_NAME+“/postic”,f.getName(),f);
por.setCannedAcl(CanneDaccessController.PublicRead);
亚马逊3.putObject(por);
}捕获(AmazonServiceException e){
e、 printStackTrace();
}最后{
}
}
}
}
公共文件getFileVideo(){
试一试{
Log.d(“视频上传活动”,文件路径);
f=新文件(imgUri.getPath());
//我认为这种方法会导致错误。
}捕获(例外e){
e、 printStackTrace();
}
返回f;
}
公开作废上载(){
字符串url=”http://ec2-13-125-85-2.ap-northeast-2.compute.amazonaws.com/videoupload.php";
final ProgressDialog ProgressDialog=新建ProgressDialog(VideoUploadActivity.this);
progressDialog.show();
StringRequest StringRequest=new StringRequest(Request.Method.POST,url,new Response.Listener()){
@凌驾
公共void onResponse(字符串响应){
Toast.makeText(VideoUploadActivity.this)영상 업로드 완료!“,Toast.LENGTH_LONG).show();
progressDialog.disclose();
完成();
}
},new Response.ErrorListener(){
@凌驾
公共无效onErrorResponse(截击错误){
Toast.makeText(VideoUploadActivity.this,error.getMessage().toString(),Toast.LENGTH_LONG.show();
}
}){
@凌驾
受保护的映射getParams()引发AuthFailureError{
上传图像();
Map params=新哈希表();
字符串contentText=edt_photoupload.getText().toString();
长时间电流=System.currentTimeMillis();
日期日期=新日期(当前时间);
SimpleDataFormat sdf0=新SimpleDataFormat(“yyyy년 嗯월 dd일");
字符串postDate=sdf0.format(日期);
参数put(“userID”、“dddddd”);
参数put(“后内容”,contentText);
参数put(“profileURL”、“ddddd”);
String actualPath=“https://”+”s3.ap-northeast-2.amazonaws.com/“+BUCKET_NAME+”/postic/“+f.getName();
参数put(“姿势”,实际路径);
参数put(“postDate”,postDate);
返回参数;
}
};
RequestQueue RequestQueue=Volley.newRequestQueue(this);
添加(stringRequest);
}
公共字符串getRealPath(上下文,Uri contentUri){
游标=空;
试一试{
字符串[]proj={MediaStore.Video.Media.DATA};
cursor=context.getContentResolver().query(contentUri,proj,null,null,null);
int col_idx=cursor.getColumnIndexOrThrow(MediaStore.Video.Media.DATA);
cursor.moveToFirst();
返回cursor.getString(col_idx);
}最后{
如果(光标!=null){
cursor.close();
}
}
}
@SuppressLint(“新API”)
公共字符串getFilePath(上下文上下文,Uri)引发Uri语法异常{
字符串选择=null;
字符串[]selectionArgs=null;
//Uri在KITKAT(Android 4.4)之后的版本中是不同的,我们需要
if(Build.VERSION.SDK_INT>=19&&DocumentsContract.isDocumentUri(context.getApplicationContext(),uri)){//DocumentsContract.isDocumentUri(context.getApplicationContext(),uri))
if(isExternalStorageDocument(uri)){
最终字符串docId=DocumentsContract.getDocumentId(uri);
最终字符串[]split=docId.split(“:”);
return Environment.getExternalS
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    fileUri = data.getData();
    String fileAbsolutePath = fileUri.getAbsolutePath();
    Intent intent = new Intent(MainActivity.class, VideoUploadActivity.class);
    intent.putExtra("imgPath", fileAbsolutePath);
    startActivity(intent);
  }
@Override
protected void onCreate(Bundle savedInstanceState) {
    try {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_video_upload);
        Intent intent = getIntent();
        final String imgUribeforeParse = intent.getStringExtra("imgUri");

        imgUri = Uri.parse(imgUribeforeParse);
        filePath = getFilePath(VideoUploadActivity.this, imgUri);

        getFileVideo();

        btn_photoupload_back = (ImageView) findViewById(R.id.btn_photoupload_back);
        btn_photoupload_back.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                onBackPressed();
            }
        });

        img_photoupload = (VideoView) findViewById(R.id.img_photoupload);
        edt_photoupload = (SocialEditText) findViewById(R.id.edt_photoupload);

        img_photoupload.setVideoURI(imgUri);
        img_photoupload.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
            @Override
            public void onPrepared(MediaPlayer mediaPlayer) {
                MediaController mc = new MediaController(VideoUploadActivity.this);
                mc.setAnchorView(img_photoupload);
                mediaPlayer.start();
                mediaPlayer.setLooping(true);
            }
        });

        userNick = getIntent().getStringExtra("userNick");
        profileURL = getIntent().getStringExtra("userProfile");

        tv_photoupload_write = (TextView) findViewById(R.id.tv_photoupload_write);

        tv_photoupload_write.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (edt_photoupload.getText().toString().equals("")) {
                    Toast.makeText(VideoUploadActivity.this, "빈 칸 없이 채워주세요.", Toast.LENGTH_LONG).show();
                    return;
                } else {
                    Upload();
                }
            }
        });
    } catch (Exception e) {
        e.printStackTrace();
    }
}

public void uploadImage() {
    if (f == null) {
        Log.d("VideoUploadActivity", "파일이 null임");
    } else {
        if (amazonS3 != null) {
            try {
                PutObjectRequest por = new PutObjectRequest(BUCKET_NAME + "/postpic", f.getName(), f);
                por.setCannedAcl(CannedAccessControlList.PublicRead);
                amazonS3.putObject(por);
            } catch (AmazonServiceException e) {
                e.printStackTrace();
            } finally {
            }
        }
    }
}

public File getFileVideo() {
    try {
        Log.d("VideoUploadActivity", filePath);
        f = new File(imgUri.getPath());
        // I think this method causes an error.
    } catch (Exception e) {
        e.printStackTrace();
    }
    return f;
}


public void Upload() {
    String url = "http://ec2-13-125-85-2.ap-northeast-2.compute.amazonaws.com/videoupload.php";
    final ProgressDialog progressDialog = new ProgressDialog(VideoUploadActivity.this);
    progressDialog.show();
    StringRequest stringRequest = new StringRequest(Request.Method.POST, url, new Response.Listener<String>() {
        @Override
        public void onResponse(String response) {
            Toast.makeText(VideoUploadActivity.this, "영상 업로드 완료!", Toast.LENGTH_LONG).show();
            progressDialog.dismiss();
            finish();
        }
    }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            Toast.makeText(VideoUploadActivity.this, error.getMessage().toString(), Toast.LENGTH_LONG).show();
        }
    }){
        @Override
        protected Map<String, String> getParams() throws AuthFailureError {
            uploadImage();
            Map<String,String> params = new Hashtable<String, String>();

            String contentText = edt_photoupload.getText().toString();

            long timecurrent = System.currentTimeMillis();

            Date date = new Date(timecurrent);

            SimpleDateFormat sdf0 = new SimpleDateFormat("yyyy년 MM월 dd일");
            String postDate = sdf0.format(date);

            params.put("userID", "dddddd");
            params.put("postContent", contentText);
            params.put("profileURL", "ddddd");
            String actualPath = "https://" + "s3.ap-northeast-2.amazonaws.com/" + BUCKET_NAME + "/postpic/" + f.getName();
            params.put("postURL", actualPath);
            params.put("postDate", postDate);

            return params;
        }
    };

    RequestQueue requestQueue = Volley.newRequestQueue(this);
    requestQueue.add(stringRequest);
}

public String getRealPath(Context context, Uri contentUri) {
    Cursor cursor = null;
    try {
        String[] proj = { MediaStore.Video.Media.DATA};
        cursor = context.getContentResolver().query(contentUri, proj, null, null, null);
        int col_idx = cursor.getColumnIndexOrThrow(MediaStore.Video.Media.DATA);
        cursor.moveToFirst();
        return cursor.getString(col_idx);
    } finally {
        if (cursor != null) {
            cursor.close();
        }
    }
}

@SuppressLint("NewApi")
public String getFilePath(Context context, Uri uri) throws URISyntaxException {
    String selection = null;
    String[] selectionArgs = null;
    // Uri is different in versions after KITKAT (Android 4.4), we need to
    if (Build.VERSION.SDK_INT >= 19 && DocumentsContract.isDocumentUri(context.getApplicationContext(), uri)) {//DocumentsContract.isDocumentUri(context.getApplicationContext(), uri))
        if (isExternalStorageDocument(uri)) {
            final String docId = DocumentsContract.getDocumentId(uri);
            final String[] split = docId.split(":");
            return Environment.getExternalStorageDirectory() + "/" + split[1];
        } else if (isDownloadsDocument(uri)) {
            final String id = DocumentsContract.getDocumentId(uri);
            uri = ContentUris.withAppendedId(
                    Uri.parse("content://downloads/public_downloads"), Long.valueOf(id));
        } else if (isMediaDocument(uri)) {
            final String docId = DocumentsContract.getDocumentId(uri);
            final String[] split = docId.split(":");
            final String type = split[0];
            if ("image".equals(type)) {
                uri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
            } else if ("video".equals(type)) {
                uri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI;
            } else if ("audio".equals(type)) {
                uri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
            }
            selection = "_id=?";
            selectionArgs = new String[]{
                    split[1]
            };
        }
    }
    if ("content".equalsIgnoreCase(uri.getScheme())) {
        String[] projection = {
                MediaStore.Images.Media.DATA
        };
        Cursor cursor = null;
        try {
            cursor = context.getContentResolver()
                    .query(uri, projection, selection, selectionArgs, null);
            int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
            if (cursor.moveToFirst()) {
                return cursor.getString(column_index);
            }
        } catch (Exception e) {
        }
    } else if ("file".equalsIgnoreCase(uri.getScheme())) {
        return uri.getPath();
    }
    return null;
}

/**
 * @param uri The Uri to check.
 * @return Whether the Uri authority is ExternalStorageProvider.
 */
private boolean isExternalStorageDocument(Uri uri) {
    return "com.android.externalstorage.documents".equals(uri.getAuthority());
}

/**
 * @param uri The Uri to check.
 * @return Whether the Uri authority is DownloadsProvider.
 */
private boolean isDownloadsDocument(Uri uri) {
    return "com.android.providers.downloads.documents".equals(uri.getAuthority());
}

/**
 * @param uri The Uri to check.
 * @return Whether the Uri authority is MediaProvider.
 */
private boolean isMediaDocument(Uri uri) {
    return "com.android.providers.media.documents".equals(uri.getAuthority());
}
    public File getFileImage(Bitmap bmp) {
    try {
        filePath = imgUri;
        fileName = filePath.getLastPathSegment();
        f = new File(getApplicationContext().getCacheDir(), fileName + ".jpg");
        f.createNewFile();
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        bmp.compress(Bitmap.CompressFormat.JPEG, 75, baos);
        byte[] imageBytes = baos.toByteArray();

        FileOutputStream fos = new FileOutputStream(f);
        fos.write(imageBytes);
        fos.flush();
        fos.close();
    } catch (Exception e)
    {
        e.printStackTrace();
    }

    return f;
}