|
Пример: Скачать среду можно с сайта для разработчиков Android (http://developer.android.com/sdk/index.html). Там скачать можно только Android Studio |
Опубликован: 10.04.2014 | Уровень: для всех | Доступ: платный | ВУЗ: Северный (Арктический) федеральный университет им. М.В. Ломоносова
Самостоятельная работа 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