title: OnInfo never gets called for MediaPlayer
body: <p>I'm having the problem that my OnInfoListener never gets called when I'm trying to use MediaPlayer to play a video. I've done research and can't seem to find the answer. The only possibility I've came up with is that I'm using mp4 videos files and maybe OnInfoListner doesn't recognize that type of file. My code is below.</p>
  
  <pre><code>public class FullImageActivity extends Activity implements SurfaceHolder.Callback, OnPreparedListener, OnInfoListener,
                                                                  OnErrorListener{
  
  private static final String TAG = "MediaPlayer shit";
  MediaPlayer player;
  SurfaceView surfaceview;
  SurfaceHolder surfaceHolder;
  int width;
  int height;
  DisplayImageOptions options;
  ViewPager viewpager;
  String path;
  long id;
  String[] projection = { GridviewData.ROWID, GridviewData.BITMAPPATH, GridviewData.VIDEOFILEPATH};
  @Override
  protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.full_image);
  
      Intent i = getIntent();
  
      id = i.getExtras().getLong("id");
      path = i.getExtras().getString("videopath");
  
      surfaceview = (SurfaceView)findViewById(R.id.surfaceview);
      surfaceHolder = surfaceview.getHolder();
      surfaceHolder.addCallback(this);
  
  
  }
  
  public void playVideo(){
      player = new MediaPlayer();
      try {
          player.reset();
          player.setOnErrorListener(this);
          File file = new File(path);
          FileInputStream inputStream = new FileInputStream(file);
          player.setDataSource(inputStream.getFD());
          inputStream.close();            
          player.setOnInfoListener(this);
          player.setOnPreparedListener(this);
          player.setDisplay(surfaceHolder);
          player.prepareAsync();
  
  
      } catch (IllegalArgumentException e) {
          e.printStackTrace();
      } catch (SecurityException e) {
          e.printStackTrace();
      } catch (IllegalStateException e) {
          e.printStackTrace();
      } catch (IOException e) {
          e.printStackTrace();
      }
  
  }
  @Override
  protected void onPause() {
      surfaceview.setVisibility(View.GONE);
      if ( player != null ) 
      {
          if ( player.isPlaying() )
              player.stop();
          player.release();
          player = null;
      }
      super.onPause();
  }
  @Override
  protected void onResume() {
      surfaceview.setVisibility(View.VISIBLE);
      Log.i(TAG, "In onResume");
      super.onResume();
  }
  @Override
  protected void onStop() {
      super.onStop();
  }
  @Override
  public void surfaceChanged(SurfaceHolder holder, int arg1, int arg2, int arg3) {
      if ( player != null ) 
      {
          try {
              Log.i(TAG, "In surface change");
              player.setDisplay(surfaceHolder);
          } catch (Exception e) {
              e.printStackTrace();
          }
      }   
  }
  @Override
  public void surfaceCreated(SurfaceHolder holder) {
      Log.i(TAG, "in surface created");
      playVideo();
  }
  
  @Override
  public void surfaceDestroyed(SurfaceHolder arg0) {
          Log.i(TAG, "Surface destroyed");
          if ( player != null ) 
          {
              if ( player.isPlaying() )
                  player.stop();
              player.release();
              player = null;
          }   }
  @Override
  public void onPrepared(MediaPlayer p) {
  
  
      player.start();
  
  }
  
  @Override
  public boolean onError(MediaPlayer arg0, int what, int arg2) {
      Log.i(TAG, "THERE WAS AN ERROR of " );
      return true;
  }
  
  
  
  
  
  @Override
  public boolean onInfo(MediaPlayer p, int what, int extra) {
      Log.i(TAG, "Within onInfo and of " + what + "and the extra of " + extra);
  
      return true;
  }
  </code></pre>
  
  <p>Thanks.</p>