2015-09-03 4 views

ответ

0
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); 
     } 
     } 
} 
0

На самом деле номер Соотношение между размером видео и емкости сети загрузки в заданном интервале времени является низкой, чтобы одновременно загружать/записывать видео поток, если пользователь не имеет очень быстро LTE сотовой связи ,

Однако, когда запись завершена, вы можете загрузить файл на свой сервер через протокол FTP. Рекомендуется предоставить каждому записанному файлу универсальный уникальный идентификатор (UUID), чтобы иметь возможность сделать разницу между всеми другими записанными файлами. Я сделал вам резюме.

Резюме

  1. Генерировать UUID с UUID.randomUUID() ToString(). который будет использоваться в течение всего процесса для идентификации записанного файла.
  2. Запись файл с таким названием «SDCard /» + UUID + «.3gp»
  3. После завершения записи, загрузите файл на сервер через FTP загрузки.
  4. Закажите удаленный сервер, чтобы выполнить скрипт PHP, который делает то, что необходимо сделать с записанным файлом, например с манипуляцией с базой данных, и т. Д. (Если есть такой скрипт, если вам не нужно это делать, только пропустите этот уровень).
  5. Закажите удаленный сервер, чтобы удалить файл, если это необходимо. (Сделано через другой PHP скрипт)

Вот образец для него Android Uploading Camera Video to Server

0

Это возможно, если вы позволяете для некоторой задержки. Вам нужно будет сохранить кадры вашего видео, а затем начать их загрузку может быть в фоновом потоке (классическая проблема производителя). Чтобы получить кадры, вы можете использовать класс ImageReader, который может принимать CameraDevice как производитель данных изображения из нового API Camera2.

Затем выполните ImageReader.OnImageAvailableListener как класс потребителя, чтобы получить последние данные изображения из очереди ImageReader.

+0

звучит хорошо .... –