2016-03-10 2 views
1

Так что я хочу, чтобы приложение открывалось для моих видео, когда я нажимаю кнопку, а затем сохраняю видео или каталог в переменной, а затем использую эту переменную, чтобы проверить длину видео. это мой код до сих пор:проверить, сколько видео в Android?

public void SevenSecVideo(){ 
    SevenSecVideo = (Button)findViewById(R.id.SevenSecondBtn);//Finds the button in design and put it into a button variable. 
    SevenSecVideo.setOnClickListener(//Listens for a button click. 
      new View.OnClickListener() {//Creates a new click listener. 
       @Override 
       public void onClick(View v) { 

        Intent mediaChooser = new Intent(Intent.ACTION_GET_CONTENT); 
        //comma-separated MIME types 
        mediaChooser.setType("video/*"); 
        startActivityForResult(mediaChooser, RESULT_LOAD_IMAGE); 
       } 
      } 
    ); 
} 


@Override 
public void onActivityReenter(int resultCode, Intent data) { 
    super.onActivityReenter(resultCode, data); 

    if(resultCode == RESULT_LOAD_IMAGE && resultCode == RESULT_OK && data != null){ 
     //gets the address of the image/data !!!!!!ALSO CAN HOLD THE ADDRESS FOR THE SERVER!!!!!!. 
     Uri SevenSecVideo = data.getData(); 

     MediaMetadataRetriever retriever = new MediaMetadataRetriever(); 
     retriever.setDataSource(String.valueOf(SevenSecVideo)); 
     String time = retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION); 
     long timeInMilliSec = Long.parseLong(time); 
     long duration = timeInMilliSec/1000; 
     long hours = duration/3600; 
     long minutes = (duration - hours * 3600)/60; 
     long seconds = duration - (hours * 3600 + minutes * 60); 

     if (seconds <= 7){ 
      Toast.makeText(this, "is 7 sec or less!", Toast.LENGTH_SHORT).show(); 
     }else{ 
      Toast.makeText(this, "is NOT 7 sec or less!", Toast.LENGTH_SHORT).show(); 
     } 
    } 
} 

Журналы ошибок:

03-10 00:05:22.086 16868-16904/com.wilsapp.wilsapp D/OpenGLRenderer: endAllStagingAnimators on 0x9f351280 (RippleDrawable) with handle 0xaefbf980 
03-10 00:05:35.406 16868-16868/com.wilsapp.wilsapp D/skia: --- SkImageDecoder::Factory returned null 
03-10 00:05:35.407 16868-16868/com.wilsapp.wilsapp I/System.out: resolveUri failed on bad bitmap uri: content://com.android.providers.media.documents/document/video%3A370166 

тостов никогда не появляются, что не так?

ответ

0

Ваш второй метод - проблема, его использование функций для изображений, а не видео.

0

кажется, что ваше состояние является неправильным

if(resultCode == RESULT_LOAD_IMAGE && resultCode == RESULT_OK ... 

Как это возможно, что resultCode равна RESULT_LOAD_IMAGEиRESULT_LOAD_IMAGE одновременно.

+0

я установил, что если заявление и TOAST еще не показывает вверх, плохо обновления вопрос и добавить журналы ошибок –

1

вы должны написать свой второй функциональный код в методе @Override onActivityResult ниже

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    if(requestCode == RESULT_LOAD_IMAGE && resultCode == RESULT_OK && data != null){ 
     //gets the address of the image/data !!!!!!ALSO CAN HOLD THE ADDRESS FOR THE SERVER!!!!!!. 
     Uri SevenSecVideo = data.getData(); 
     MediaMetadataRetriever retriever = new MediaMetadataRetriever(); 
     retriever.setDataSource(MainActivity.this,SevenSecVideo); 
     String time = retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION); 
     long timeInMilliSec = Long.parseLong(time); 
     long duration = timeInMilliSec/1000; 
     long hours = duration/3600; 
     long minutes = (duration - hours * 3600)/60; 
     long seconds = duration - (hours * 3600 + minutes * 60); 

     if (seconds <= 7){ 
      Toast.makeText(this, "is 7 sec or less!", Toast.LENGTH_SHORT).show(); 
     }else{ 
      Toast.makeText(this, "is NOT 7 sec or less!", Toast.LENGTH_SHORT).show(); 
     } 
    } 
} 
Смежные вопросы