Пример: Скачать среду можно с сайта для разработчиков Android (http://developer.android.com/sdk/index.html). Там скачать можно только Android Studio |
Северный (Арктический) федеральный университет им. М.В. Ломоносова
Опубликован: 10.04.2014 | Доступ: свободный | Студентов: 7004 / 1389 | Длительность: 14:18:00
Специальности: Программист
Самостоятельная работа 7:
Многооконное приложение
package com.example.lab5_4_media; import android.media.MediaPlayer; import android.media.MediaPlayer.OnCompletionListener; import android.media.MediaPlayer.OnPreparedListener; import android.os.Bundle; import android.view.Gravity; import android.view.SurfaceView; import android.view.View; import android.widget.CheckBox; import android.widget.CompoundButton; import android.widget.EditText; import android.widget.Toast; import android.widget.CompoundButton.OnCheckedChangeListener; import android.app.Activity; public class MediaActivity extends Activity implements OnPreparedListener, OnCompletionListener{ MediaPlayer mediaPlayer; CheckBox chbLoop; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_media); chbLoop = (CheckBox) findViewById(R.id.chb_Loop); chbLoop.setOnCheckedChangeListener(new OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { if (mediaPlayer != null) mediaPlayer.setLooping(isChecked); } }); } public void onClickStart(View view) { releaseMP(); String DATA=((EditText)findViewById(R.id.et_MediaPath)).getText().toString(); try { mediaPlayer = new MediaPlayer(); mediaPlayer.setDataSource(DATA); mediaPlayer.setDisplay(((SurfaceView) findViewById(R.id.surfaceView1)).getHolder()); //mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); mediaPlayer.setOnPreparedListener(this); mediaPlayer.prepareAsync(); } catch (Exception e) { showMessage("Ошибка воспроизведения"); } if (mediaPlayer == null) return; mediaPlayer.setLooping(chbLoop.isChecked()); mediaPlayer.setOnCompletionListener(this); } private void showMessage(String text){ Toast toast = Toast.makeText(getApplicationContext(), text, Toast.LENGTH_SHORT); toast.setGravity(Gravity.CENTER, 0, 0); toast.show(); } private void releaseMP() { if (mediaPlayer != null) { try { mediaPlayer.release(); mediaPlayer = null; } catch (Exception e) { e.printStackTrace(); } } } public void onClick(View view) { if (mediaPlayer == null) return; switch (view.getId()) { case R.id.b_Pause: if (mediaPlayer.isPlaying()) mediaPlayer.pause(); break; case R.id.b_Resume: if (!mediaPlayer.isPlaying()) mediaPlayer.start(); break; case R.id.b_Stop: mediaPlayer.stop(); break; } } @Override public void onPrepared(MediaPlayer mp) { mp.start(); } @Override public void onCompletion(MediaPlayer mp) {} @Override protected void onDestroy() { super.onDestroy(); releaseMP(); } }Листинг 12.2. Класс MediaActivity
package com.example.lab5_4_media; import java.io.File; import java.util.ArrayList; import android.net.Uri; import android.os.Bundle; import android.app.Activity; import android.util.Log; import android.view.View; import android.widget.ImageView; import android.widget.TextView; public class GalleryActivity extends Activity { int currentImage=0; ArrayList<String> images; ImageView imageView; TextView nameView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_gallery); } @Override public void onResume(){ super.onResume(); currentImage=0; Log.d("myLogs","onResume cI="+currentImage); nameView=((TextView)findViewById(R.id.imageName)); images=new ArrayList<String>(); imageView=((ImageView)findViewById(R.id.image)); try{ File imagesDirectory=new File("/sdcard/TrainingMedia/"); images=searchImage(imagesDirectory); updatePhoto(Uri.parse(images.get(currentImage))); }catch(Exception e){ nameView.setText("Ошибка: Папка '/sdcard/TrainingMedia/' не найдена"); Log.d("myLogs","Ошибка"); } } @Override protected void onPause() { super.onPause(); images.clear(); Log.d("myLogs","onPause cI="+currentImage); } private ArrayList<String> searchImage(File dir){ ArrayList<String> imagesFinded=new ArrayList<String>(); for(File f:dir.listFiles()){ if(!f.isDirectory()){ String fileExt=getFileExt(f.getAbsolutePath()); if(fileExt.equals("png") || fileExt.equals("jpg") || fileExt.equals("jpeg")){ Log.d("myLogs","Файл найден "+f.getAbsolutePath()); imagesFinded.add(f.getAbsolutePath()); } } } return imagesFinded; } public static String getFileExt(String filename){ return filename.substring(filename.lastIndexOf(".") + 1); } public void updatePhoto(Uri uri){ try{ nameView.setText((currentImage+1)+"/"+images.size()); imageView.setImageURI(uri); }catch(Exception e){ nameView.setText("Ошибка загрузки файла"); } } public void onNext(View v){ if(currentImage+1<images.size() && images.size()>0){ currentImage++; updatePhoto(Uri.parse(images.get(currentImage))); } } public void onPrevious(View v){ if(currentImage>0 && images.size()>0){ currentImage--; updatePhoto(Uri.parse(images.get(currentImage))); } } }Листинг 12.3. Класс GalleryActivity
package com.example.lab5_4_media; import android.os.Bundle; import android.app.Activity; import android.content.Intent; import android.util.Log; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.ImageButton; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); OnClickListener btnClick=new OnClickListener() { @Override public void onClick(View v) { Log.d("myLogs",v.getId()+""); Click(v.getId()); } }; ((ImageButton)findViewById(R.id.bMusic)).setOnClickListener(btnClick); ((ImageButton)findViewById(R.id.bCamera)).setOnClickListener(btnClick); ((ImageButton)findViewById(R.id.bGallery)).setOnClickListener(btnClick); } protected void Click(int view){ Intent intent=null; Log.d("myLogs",view+""); switch (view){ case R.id.bMusic: intent=new Intent(this,MediaActivity.class); break; case R.id.bGallery: intent=new Intent(this,GalleryActivity.class); break; case R.id.bCamera: intent=new Intent(this,CameraActivity.class); break; default: break; } if(intent!=null){ Log.d("myLogs","Интент = "+intent.toString()); startActivity(intent); } } }Листинг 12.4. Класс MainActivity