Android 在安卓系统中,可以同时录制视频并上传到远程服务器吗?

Android 在安卓系统中,可以同时录制视频并上传到远程服务器吗?,android,android-video-player,Android,Android Video Player,我想做视频录制,同时将视频上传到android应用程序中的远程服务器。这可能吗 提前感谢。包装。coderzheaven; package pack.coderzheaven; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import jav

我想做视频录制,同时将视频上传到android应用程序中的远程服务器。这可能吗

提前感谢。

包装。coderzheaven;
    package pack.coderzheaven;

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.HashMap;
import android.app.Activity;
import android.content.Intent;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.provider.<span class="IL_AD" id="IL_AD12">MediaStore</span>;
import android.util.Log;

public class UploadAudioDemo extends Activity {

    private static final int SELECT_AUDIO = 2;
    String selectedPath = "";

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        openGalleryAudio();
    }

    public void openGalleryAudio(){

    Intent intent = new Intent();
        intent.setType("audio/*");
        intent.setAction(Intent.ACTION_GET_CONTENT);
        startActivityForResult(Intent.createChooser(intent,"Select Audio "), SELECT_AUDIO);
   }

    public void onActivityResult(int requestCode, int resultCode, Intent data) {

        if (resultCode == RESULT_OK) {

            if (requestCode == SELECT_AUDIO)
            {
                System.out.println("SELECT_AUDIO");
                Uri selectedImageUri = data.getData();
                selectedPath = getPath(selectedImageUri);
                System.out.println("SELECT_AUDIO Path : " + selectedPath);
                doFileUpload();
            }

        }
    }

    public String getPath(Uri uri) {
        String[] projection = { MediaStore.Images.Media.DATA };
        Cursor cursor = managedQuery(uri, projection, null, null, null);
        int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
        cursor.moveToFirst();
        return cursor.getString(column_index);
    }

    private void doFileUpload(){
        HttpURLConnection conn = null;
        DataOutputStream dos = null;
        DataInputStream inStream = null;
        String lineEnd = "rn";
        String twoHyphens = "--";
        String boundary =  "*****";
        int bytesRead, bytesAvailable, bufferSize;
        byte[] buffer;
        int maxBufferSize = 1*1024*1024;
        String responseFromServer = "";
        String urlString = "http://your_website.com/upload_audio_test/upload_audio.php";
        try
        {
         //------------------ CLIENT REQUEST
        FileInputStream fileInputStream = new FileInputStream(new File(selectedPath) );
         // open a URL connection to the Servlet
         URL url = new URL(urlString);
         // Open a <span class="IL_AD" id="IL_AD10">HTTP connection</span> to the URL
         conn = (HttpURLConnection) url.openConnection();
         // <span class="IL_AD" id="IL_AD6">Allow</span> Inputs
         conn.setDoInput(true);
         // Allow Outputs
         conn.setDoOutput(true);
         // Don't use a cached copy.
         conn.setUseCaches(false);
         // Use a post method.
         conn.setRequestMethod("POST");
         conn.setRequestProperty("Connection", "Keep-Alive");
         conn.setRequestProperty("Content-Type", "multipart/form-data;boundary="+boundary);
         dos = new DataOutputStream( conn.getOutputStream() );
         dos.writeBytes(twoHyphens + boundary + lineEnd);
         dos.writeBytes("Content-Disposition: form-data; name="uploadedfile";filename="" + selectedPath + """ + 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 <span class="IL_AD" id="IL_AD8">file data</span>...
         dos.writeBytes(lineEnd);
         dos.writeBytes(twoHyphens + boundary + twoHyphens + lineEnd);
         // close streams
         Log.e("Debug","File is written");
         fileInputStream.close();
         dos.flush();
         dos.close();
        }
        catch (MalformedURLException ex)
        {
             Log.e("Debug", "error: " + ex.getMessage(), ex);
        }
        catch (IOException ioe)
        {
             Log.e("Debug", "error: " + ioe.getMessage(), ioe);
        }
        //------------------ read the SERVER RESPONSE
        try {
              inStream = new DataInputStream ( conn.getInputStream() );
              String str;

              while (( str = inStream.readLine()) != null)
              {
                   Log.e("Debug","Server Response "+str);
              }
              inStream.close();

        }
        catch (IOException ioex){
             Log.e("Debug", "error: " + ioex.getMessage(), ioex);
        }
      }
}
导入java.io.DataInputStream; 导入java.io.DataOutputStream; 导入java.io.File; 导入java.io.FileInputStream; 导入java.io.IOException; 导入java.net.HttpURLConnection; 导入java.net.MalformedURLException; 导入java.net.URL; 导入java.util.HashMap; 导入android.app.Activity; 导入android.content.Intent; 导入android.database.Cursor; 导入android.net.Uri; 导入android.os.Bundle; 导入android.os.Environment; 导入android.provider.MediaStore; 导入android.util.Log; 公共类UploadAudioDemo扩展活动{ 专用静态最终整数选择_音频=2; 字符串selectedPath=“”; @凌驾 创建时的公共void(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.main); openGalleryAudio(); } 公开作废openGalleryAudio(){ 意图=新意图(); intent.setType(“音频/*”); intent.setAction(intent.ACTION\u GET\u CONTENT); startActivityForResult(Intent.createChooser(Intent,“选择音频”),选择音频; } ActivityResult上的公共void(int请求代码、int结果代码、意图数据){ if(resultCode==RESULT\u OK){ 如果(请求代码==选择音频) { System.out.println(“选择音频”); Uri selectedImageUri=data.getData(); selectedPath=getPath(selectedImageUri); System.out.println(“选择音频路径:+selectedPath”); doFileUpload(); } } } 公共字符串getPath(Uri){ 字符串[]投影={MediaStore.Images.Media.DATA}; Cursor Cursor=managedQuery(uri、投影、null、null、null); int column_index=cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA); cursor.moveToFirst(); 返回cursor.getString(列索引); } 私有void doFileUpload(){ HttpURLConnection conn=null; DataOutputStream dos=null; DataInputStream inStream=null; 字符串lineEnd=“rn”; 字符串双连字符=“--”; 字符串边界=“*******”; int字节读取,字节可用,缓冲区大小; 字节[]缓冲区; int maxBufferSize=1*1024*1024; 字符串responseFromServer=“”; 字符串URL字符串=”http://your_website.com/upload_audio_test/upload_audio.php"; 尝试 { //------------------客户请求 FileInputStream FileInputStream=新的FileInputStream(新文件(selectedPath)); //打开到Servlet的URL连接 URL=新URL(URL字符串); //打开到URL的HTTP连接 conn=(HttpURLConnection)url.openConnection(); //允许输入 conn.setDoInput(真); //允许输出 连接设置输出(真); //不要使用缓存副本。 conn.SETUSECHACHES(假); //使用post方法。 conn.setRequestMethod(“POST”); conn.setRequestProperty(“连接”、“保持活动”); conn.setRequestProperty(“内容类型”、“多部分/表单数据;边界=“+boundary”); dos=新的DataOutputStream(conn.getOutputStream()); 写字节(两个连字符+边界+行结束); dos.writeBytes(“内容处置:表单数据;name=“uploadedfile”;filename=”“+selectedPath+”“”+lineEnd); dos.writeBytes(lineEnd); //创建最大大小的缓冲区 bytesAvailable=fileInputStream.available(); bufferSize=Math.min(字节可用,maxBufferSize); buffer=新字节[bufferSize]; //读取文件并将其写入表单。。。 bytesRead=fileInputStream.read(缓冲区,0,缓冲区大小); 而(字节读取>0) { 写入(缓冲区,0,缓冲区大小); bytesAvailable=fileInputStream.available(); bufferSize=Math.min(字节可用,maxBufferSize); bytesRead=fileInputStream.read(缓冲区,0,缓冲区大小); } //发送文件数据后所需的多部分表单数据。。。 dos.writeBytes(lineEnd); 写字节(两个连字符+边界+两个连字符+行结束); //合流 Log.e(“调试”,“文件已写入”); fileInputStream.close(); dos.flush(); dos.close(); } 捕获(格式错误) { Log.e(“调试”,“错误:”+ex.getMessage(),ex); } 捕获(ioe异常ioe) { Log.e(“调试”,“错误:”+ioe.getMessage(),ioe); } //------------------读取服务器响应 试一试{ inStream=新数据输入流(conn.getInputStream()); 字符串str; while((str=inStream.readLine())!=null) { Log.e(“调试”、“服务器响应”+str); } 流内关闭(); } 捕获(IOException ioex){ Log.e(“调试”,“错误:”+ioex.getMessage(),ioex); } } }
package pack.coderzheaven;
导入java.io.DataInputStream;
导入java.io.DataOutputStream;
导入java.io.File;
导入java.io.FileInputStream;
导入java.io.IOException;
导入java.net.HttpURLConnection;
导入java.net.MalformedURLException;
导入java.net.URL;
导入java.util.HashMap;
导入android.app.Activity;
导入android.content.Intent;
导入android.database.Cursor;
导入android.net.Uri;
导入android.os.Bundle;
导入android.os.Environment;
导入android.provider.MediaStore;
导入android.util.Log;
公共类UploadAudioDemo扩展活动{
专用静态最终整数选择\u音频=