2013-07-03 3 views
0

Я разработал одно приложение для трансляции потокового видео, но оно не поддерживает версию Android 2.2, 2.3 или т. Д., Только воспроизводить видео на Android версии 4.1 (Samsung Galaxy Grand). Я использую videoview в своем проекте. Так вы можете сказать мне точную причину. Мой код выглядит следующим образом:Android Video View не поддерживается на v2.2

mPath.setText("http://iptvshqip.dyndns.tv:8090");  
    mPlay = (ImageButton) findViewById(R.id.play); 
    mPause = (ImageButton) findViewById(R.id.pause); 
    mReset = (ImageButton) findViewById(R.id.reset); 
    mStop = (ImageButton) findViewById(R.id.stop); 
      mPlay.setOnClickListener(new OnClickListener() { 
     public void onClick(View view) { 
      playVideo(); 
     } 
    }); 
    mPause.setOnClickListener(new OnClickListener() { 
     public void onClick(View view) { 
      if (mVideoView != null) { 
       mVideoView.pause(); 
      } 
     } 
    }); 
    mReset.setOnClickListener(new OnClickListener() { 
     public void onClick(View view) { 
      if (mVideoView != null) { 
       mVideoView.seekTo(0); 
      } 
     } 
    }); 
    mStop.setOnClickListener(new OnClickListener() { 
     public void onClick(View view) { 
      if (mVideoView != null) { 
       current = null; 
       mVideoView.stopPlayback(); 
      } 
     } 
    }); 
    runOnUiThread(new Runnable(){ 
     public void run() { 
      playVideo(); 
     } 
    }); 
    } 
private void playVideo() { 
    try { 
     final String path = mPath.getText().toString(); 
     Log.v(TAG, "path: " + path); 
     if (path == null || path.length() == 0) { 
      Toast.makeText(MainActivity.this, "File URL/path is empty", 
        Toast.LENGTH_LONG).show(); 
     } 
     else { 
      if (path.equals(current) && mVideoView != null) { 
       mVideoView.start(); 
       mVideoView.requestFocus(); 
       return; 
      } 
      current = path; 
      mVideoView.setVideoPath(getDataSource(path)); 
      mVideoView.start(); 
      mVideoView.requestFocus(); 
     } 
    } catch (Exception e) { 
     Log.e(TAG, "error: " + e.getMessage(), e); 
     if (mVideoView != null) { 
      mVideoView.stopPlayback(); 
     } 
    } 
} 
    private String getDataSource(String path) throws IOException { 
    if (!URLUtil.isNetworkUrl(path)) { 
     return path; 
    } else { 
     URL url = new URL(path); 
     URLConnection cn = url.openConnection(); 
     cn.connect(); 
     InputStream stream = cn.getInputStream(); 
     if (stream == null) 
      throw new RuntimeException("stream is null"); 
     File temp = File.createTempFile("mediaplayertmp", "dat"); 
     temp.deleteOnExit(); 
     String tempPath = temp.getAbsolutePath(); 
     FileOutputStream out = new FileOutputStream(temp); 
     byte buf[] = new byte[128]; 
     do { 
      int numread = stream.read(buf); 
      if (numread <= 0) 
       break; 
      out.write(buf, 0, numread); 
     } while (true); 
     try { 
      stream.close(); 
     } catch (IOException ex) { 
      Log.e(TAG, "error: " + ex.getMessage(), ex); 
     } 
     return tempPath; 
    } 
} 
+0

Проверьте поддерживаемые форматы кодирования и сетевые протоколы здесь: http://developer.android.com/guide/appendix/media-formats.html –

ответ

0

Как уже говорилось, Android VideoView существует с уровня API 1.

За исключением:

  • флагов STATUS_BAR_HIDDEN и STATUS_BAR_VISIBLE - осуждается в API 14
  • функция setBackgroundDrawable(Drawable background) осуждается в API 16
  • Общественные методы - canPause(), canSeekBackward() и canSeekForward(), добавленные в API 5
  • resume() и suspend() добавлены в API 8
  • onInitializeAccessibilityEvent (AccessibilityEvent event) и onInitializeAccessibilityNodeInfo (AccessibilityNodeInfo info) добавлены в API 14
  • setOnInfoListener (MediaPlayer.OnInfoListener l) добавлены в API 17

Используете ли вы какие-либо из них? В любом случае, ваша проблема может быть в другом месте.

Пожалуйста, вставьте код и опишите более подробно, как это не работает.

Смежные вопросы