2011-07-16 6 views
0

活動2はどのように私は、Android正しく

  public class Menus extends Activity { 
//set constants for MediaStore to query, and show videos 
private final static Uri MEDIA_EXTERNAL_CONTENT_URI = MediaStore.Video.Media.EXTERNAL_CONTENT_URI; 
private final static String _ID = MediaStore.Video.Media._ID; 
private final static String MEDIA_DATA = MediaStore.Video.Media.DATA; 
//flag for which one is used for images selection 
private GridView _gallery; 
private Cursor _cursor; 
private int _columnIndex; 
private int[] _videosId; 
private Uri _contentUri; 


protected Context _context; 
/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    _context = getApplicationContext(); 
    _gallery = (GridView) findViewById(R.id.videoGrdVw); 
    //set default as external/sdcard uri 
    _contentUri = MEDIA_EXTERNAL_CONTENT_URI; 
    //initialize the videos uri 
    //showToast(_contentUri.getPath()); 
    initVideosId(); 
    //set gallery adapter 
    setGalleryAdapter(); 
} 
private void setGalleryAdapter() { 
    _gallery.setAdapter(new VideoGalleryAdapter(_context)); 
    _gallery.setOnItemClickListener(_itemClickLis); 

} 
private AdapterView.OnItemClickListener _itemClickLis = new OnItemClickListener() 
{ 
    public void onItemClick(AdapterView<?> parent, View v, int position, long id) 
    { 
     // Now we want to actually get the data location of the file 
     String [] proj={MEDIA_DATA}; 
     // We request our cursor again 
     _cursor = managedQuery(_contentUri, 
       proj, // Which columns to return 
       null,  // WHERE clause; which rows to return (all rows) 
       null,  // WHERE clause selection arguments (none) 
       null); // Order-by clause (ascending by name) 
     // We want to get the column index for the data uri 
     int count = _cursor.getCount(); 
     // 
     _cursor.moveToFirst(); 
     // 
     _columnIndex = _cursor.getColumnIndex(MEDIA_DATA); 
     // Lets move to the selected item in the cursor 
     _cursor.moveToPosition(position); 

     Intent data = new Intent(getBaseContext(), Editor.class); data.putExtra("mnt/sdcard-ext", _ID); startActivity(data); 
    } 
}; 
private void initVideosId() { 
    try 
    { 
     //Here we set up a string array of the thumbnail ID column we want to get back 
     String [] proj={_ID}; 
     // Now we create the cursor pointing to the external thumbnail store 
     _cursor = managedQuery(_contentUri, 
       proj, // Which columns to return 
       null,  // WHERE clause; which rows to return (all rows) 
       null,  // WHERE clause selection arguments (none) 
       null); // Order-by clause (ascending by name) 
     int count= _cursor.getCount(); 
     // We now get the column index of the thumbnail id 
     _columnIndex = _cursor.getColumnIndex(_ID); 
     //initialize 
     _videosId = new int[count]; 
     //move position to first element 
     _cursor.moveToFirst();   
     for(int i=0;i<count;i++) 
     {   
      int id = _cursor.getInt(_columnIndex); 
      // 
      _videosId[i]= id; 
      // 
      _cursor.moveToNext(); 
      // 
     } 
    }catch(Exception ex) 
    { 

    } 

} 


// 
private class VideoGalleryAdapter extends BaseAdapter 
{ 
    public VideoGalleryAdapter(Context c) 
    { 
     _context = c; 
    } 
    public int getCount() 
    { 
     return _videosId.length; 
    } 
    public Object getItem(int position) 
    { 
     return position; 
    } 
    public long getItemId(int position) 
    { 
     return position; 
    } 
    public View getView(int position, View convertView, ViewGroup parent) 
    { 
     ImageView imgVw= new ImageView(_context);; 
     try 
     { 
      if(convertView!=null) 
      { 
       imgVw= (ImageView) convertView; 
      } 
      imgVw.setImageBitmap(getImage(_videosId[position])); 
      imgVw.setLayoutParams(new GridView.LayoutParams(96, 96)); 
      imgVw.setPadding(8, 8, 8, 8); 
     } 
     catch(Exception ex) 
     { 
      System.out.println("StartActivity:getView()-135: ex " + ex.getClass() +", "+ ex.getMessage()); 
     } 
     return imgVw; 
    } 

    // Create the thumbnail on the fly 
    private Bitmap getImage(int id) { 
     Bitmap thumb = MediaStore.Video.Thumbnails.getThumbnail(
       getContentResolver(), 
       id, MediaStore.Video.Thumbnails.MICRO_KIND, null); 
     return thumb; 
    } 

} 

}

活動3

 public class Editor extends Activity { 

private VideoView video; 
private MediaController ctlr; 
ImageButton video1; 
int isClicked = 0; 
ImageButton audio; 
int isClicked1 = 0; 
int data = getIntent(data).getExtras() 
    .getInt("mnt/sdcard-ext"); 

    @Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    getWindow().setFormat(PixelFormat.TRANSLUCENT); 
    setContentView(R.layout.editor); 


    video1 = (ImageButton) findViewById(R.id.video); 
    video1.setOnClickListener(new OnClickListener() { 

     public void onClick(View v) { 
      if (isClicked == 0) { 
       video1.setImageResource(R.drawable.video_pressed); 
       isClicked = 1; 
      } else { 
       video1.setImageResource(R.drawable.video1); 
       isClicked = 0; 
      } 
      } 
    }); 

    audio = (ImageButton) findViewById(R.id.audio); 
    audio.setOnClickListener(new OnClickListener() { 

     public void onClick(View v) { 
      if (isClicked1 == 0) { 
       audio.setImageResource(R.drawable.audio_pressed); 
       isClicked1 = 1; 
      } else { 
       audio.setImageResource(R.drawable.audio); 
       isClicked1 = 0; 
      } 
     } 
     }); 

    if (clip.exists()) { 
      video=(VideoView)findViewById(R.id.video); 
      video.setVideoPath(clip.getAbsolutePath()); 

    ctlr=new MediaController(this); 
    ctlr.setMediaPlayer(video); 
    video.setMediaController(ctlr); 
    video.requestFocus(); 
    video.start(); 
    } 
    } 
} 

にこの目的のデータを渡すことができ、私は私がちょうど合格しようとしているプログラマであるつもりはありませんしていますこのクラス。だから心配しないでください。私はこのインテントデータを第3のアクティビティに渡す方法を知る必要がありますが、エクストラをどこに置いてエクストラを入手するかはわかりません。

Androidのマニフェスト

   <activity 
     android:name=".Editor" 
     android:screenOrientation="landscape" > 
     <intent-filter> 
     <action 
    android:name="com.ave.Editor" /> 
     <category 
    android:name="android.intent.category.DEFAULT" /> 
     </intent-filter> 

あなたはもう必要な場合は情報が私に知らせてください。私はこの混乱しやすい邪魔をするのをやめようとしています。そして、どんな助けもありがとう。

答えて

0
Intent data = new Intent(getBaseContext(), Editor.class); data.putExtra("mnt/sdcard-ext", _ID); startActivity(data); 

私はこれを拡張する方が簡単であることがわかりました。私は、これはあなたがしたい何だと思います

public void onCreate(Bundle icicle) 
{ 
    //===setting content view, any other setup you wanna do 
    Intent i=getIntent(); 
    String data=i.getStringExtra("data1"); 

    if(data!=null) 
     //do something with it 
    else 
     //the data is null; don't do anything with it or you'll get a NullPointerException 
} 

:他の活動に

Intent i=new Intent(this, Editor.class); 
i.putExtra("data1", _ID); 
startActivity(data); 

。そうでなければ教えてください!

+0

もうすぐです。ちょうどそれを試みたと私はあなたが助けに感謝していますが、私はそれが渡される必要がどのようにではありません。私はそれをより良く説明しようとします。アクティビティ2は、電話のSDカードからVideoGridViewのすべてのビデオサムネイルを表示します。とにかく、サムネイルをクリックしたときのアクティビティ2では、3番目のアクティビティのvideoView内を渡して表示します。必ずしも自動再生されているわけではありませんが、画面上をクリックすると再生できます。私はおそらく自分自身を理解することができますが、すべてあなたが私にあなたに感謝を与えることができます!これは月曜日であり、私はそれを強調しています。 – Cataroux

+0

ユーザーがサムネイルをクリックすると、そのファイルのパスを余分なものとして送信するだけです。アクティビティ3がパスを取得すると、パスからファイルをロードし、VideoViewに表示する必要があります。次に、VideoView.setPath()または.setURI()を使用してロードし、自動再生しようとするとすぐに.pause()を使用して一時停止することができます。 putExtra(Serializable、String)メソッドとgetSerializableExtra(String)メソッドを使ってビデオを送ることができると思います。 –

+0

ありがとうございます。うまくいくかもしれません。 – Cataroux

0

アクティビティ3の行int data = getIntent(data).getExtras() .getInt("mnt/sdcard-ext");は、おそらくonCreate()メソッドに移動する必要があります。あなたはputExtra("mnt/sdcard-ext", _ID)getInt、代わりの"mnt/sdcard-ext"を行う際に、ここでいう また、あなたはおそらく、そのようcom.example.appname.extranameとしてパッケージ名を使用する必要があります。 http://developer.android.com/reference/android/content/Intent.html

関連する問題