2012-03-13 1 views
0

SD 카드에서 비디오 파일을 재생할 수 없습니다. - SD 카드에서 특정 비디오 파일을 재생하고 있습니다. - 목록에서 비디오를 선택하면 비디오가 재생되지 않습니다. - videoView 클래스에 의도를 전달하고 있습니다. 읽지 않습니다.SD 카드 비디오가 재생되지 않습니까?

public class AndroidThumbnailList extends ListActivity{ 

String[] videoFileList = { 
     "/sdcard/Periodontal/Perio-Probling.mp4", 
     "/sdcard/Periodontal/Inlays.mp4" 
     /* "/sdcard/Video/Onlays.mp4", 
     "/sdcard/Video/Root Canal Treatment.mp4", 
     "/sdcard/Video/crown4.mp4", 
     "/sdcard/Video/crown5.mp4", 
     "/sdcard/Video/crown6.mp4", 
     "/sdcard/Video/crown7.mp4"*/ 
}; 

public class MyThumbnaildapter extends ArrayAdapter<String>{ 

    public MyThumbnaildapter(Context context, int textViewResourceId, 
      String[] objects) { 
     super(context, textViewResourceId, objects); 
     // TODO Auto-generated constructor stub 
    } 

    @Override 
    public View getView(final int position, View convertView, ViewGroup parent) { 
     // TODO Auto-generated method stub 

     View row = convertView; 
     if(row==null){ 
      LayoutInflater inflater=getLayoutInflater(); 
      row=inflater.inflate(R.layout.row, parent, false); 
     } 


     row.setOnClickListener(new OnClickListener() { 

      public void onClick(View arg0) { 
       if(position==0) 
       { 
        Intent intent = new Intent(AndroidThumbnailList.this, ViewVideo.class); 
        intent.putExtra("videofilename", videoFileList); 
        startActivity(intent); 

       } 
        /*if(position==1) 
       { 

      Intent intent = new Intent(mContext, PeriodontalCare.class); 
      mContext.startActivity(intent);       


       } 
         if(position==2) 
       { 
        Intent i = new Intent(mContext, CosmeticCare.class); 

        mContext.startActivity(i); 

       }*/ 
      } 
     }); 
     TextView textfilePath = (TextView)row.findViewById(R.id.FilePath); 
     textfilePath.setText(videoFileList[position]); 

     ImageView imageThumbnail = (ImageView)row.findViewById(R.id.Thumbnail); 

     Bitmap bmThumbnail; 
     bmThumbnail = ThumbnailUtils.createVideoThumbnail(videoFileList[position], Thumbnails.MICRO_KIND); 
     imageThumbnail.setImageBitmap(bmThumbnail); 

     return row; 
    } 

} 

/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setListAdapter(new MyThumbnaildapter(AndroidThumbnailList.this, R.layout.row, videoFileList)); 
} 

은} 내 VideoView를 지켜 보면서 클래스

다음 VideoView findViewById

public class ViewVideo extends Activity { 
    private String videoFileList; 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     // setContentView(R.layout.videofile); 

     // mVideoView = (VideoView) findViewById(R.id.surface_view); 



     System.gc(); 
     Intent i = getIntent(); 
     Bundle extras = i.getExtras(); 
     videoFileList = extras.getString("videofilename"); 
     VideoView vv = new VideoView(getApplicationContext()); 
     setContentView(vv); 
     vv.setVideoPath(videoFileList); 
     vv.setMediaController(new MediaController(this)); 
     vv.requestFocus(); 
     vv.start(); 
    } 

}

+0

그리드 상품에 OnClickListener를 사용하지 마십시오. 그리드 뷰에서 제공하는 onItemSelected (또는 뭔가)를 사용하십시오. 행 오브젝트가 재사용되기 때문입니다. – njzk2

답변

1
  1. 당신은 새로운 VideoView을 만들 수 있지만하지한다 사용 :

    setContentView(R.layout.videofile); 
    VideoView vv = (VideoView) findViewById(R.id.surface_view); 
    // rest of the calls on vv 
    
  2. 다른 장치간에 변경 될 수 있으므로 비디오 파일의 하드 코드 된 경로는 사용하지 않아야합니다. 대신, 그런 것을 사용하십시오.

    Environment.getExternalStorageDirectory().getAbsolutePath() + "/Periodontal/Perio-Probling.mp4" 
    
+0

안녕 Binyamin, reply-Environment.getExternalStorageDirectory(). getAbsolutePath() + "/Periodontal/Perio-Probling.mp4"- 단일 파일에 대해서만 감사합니다. 하나 이상의 파일을 읽으려는 경우 읽을 수 있습니까? – Chandu

+0

이것은 메서드의 사용법을 보여주기 위해 필요할 때마다 사용하거나 메서드 결과가 들어있는 String 변수를 만드는 예제 일뿐입니다. – MByD