Multimedia en android

Preview:

Citation preview

Multimedia en androidJosé Manuel Castillo PérezRafael González Jiménez

índice Introducción Imágenes Sonido Video Conclusión

IntroducciónLas aplicaciones android permiten insertar gran cantidad de elementos multimedia, como:

Imágenes estáticas Imágenes interactivas Clics de sonido (canciones) Vídeos y películas completas

Vamos a ver cada cosa a continuación.

Imágenes

Imágenes ¿Dónde guardarlas? ¿En qué formato? ¿Con qué nombre?

ImágenesComo imagen de fondo…

En el xml colocar: android:background="@drawable/fondo" >

Donde en la carpeta drawable tendremos que tener previamente la imagen fondo.jpg

Imágenes

Imágenes ImageView

Imágenes ImageButton

Imágenes

Imágenes public class MainActivity extends Activity 

{

     ImageView selectedImage;       private Integer[] mImageIds = {                R.drawable.image1,                R.drawable.image2,                R.drawable.image3,                R.drawable.image4,                R.drawable.image5,                R.drawable.image6,                R.drawable.image7,                R.drawable.image8        };    @Override    public void onCreate(Bundle savedInstanceState)     {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);                    Gallery gallery = (Gallery) findViewById(R.id.gallery1);       

selectedImage=(ImageView)findViewById(R.id.imageView1);        gallery.setSpacing(1);        gallery.setAdapter(new GalleryImageAdapter(this));

         // clicklistener for Gallery        gallery.setOnItemClickListener(new OnItemClickListener() {            public void onItemClick(AdapterView<?> parent, View v, int position, long id) {                Toast.makeText(MainActivity.this, "Your selected position = " + position, Toast.LENGTH_SHORT).show();                // show the selected Image                selectedImage.setImageResource(mImageIds[position]);            }        });    }  }

Imágenes public class GalleryImageAdapter extends

BaseAdapter {    private Context mContext;

    private Integer[] mImageIds = {            R.drawable.image1,            R.drawable.image2,            R.drawable.image3,            R.drawable.image4,            R.drawable.image5,            R.drawable.image6,            R.drawable.image7,            R.drawable.image8    };

    public GalleryImageAdapter(Context context)     {        mContext = context;    }

    public int getCount() {        return mImageIds.length;    }

    public Object getItem(int position) {        return position;    }

    public long getItemId(int position) {        return position;    }

    // Override this method according to your need    public View getView(int index, View view, ViewGroup viewGroup)     {        // TODO Auto-generated method stub        ImageView i = new ImageView(mContext);

        i.setImageResource(mImageIds[index]);        i.setLayoutParams(new Gallery.LayoutParams(200, 200));            i.setScaleType(ImageView.ScaleType.FIT_XY);

        return i;    }}

Imágenes Para coger imágenes de la SD en lugar de en la carpeta

drawable…

private Cursor getImagesSD() {String[] imgColumnID = { MediaStore.Images.Thumbnails._ID };

Cursor cursor = managedQuery(

MediaStore.Images.Media.EXTERNAL_CONTENT_URI,imgColumnID,MediaStore.Images.Media.DATA + " like ? ",new String[] { "%yourFolderHere%" }, null);

return cursor;}

Imágenes interactivas: paint Creamos una actividad y referenciamos una instancia de una clase

derivada de View.

La subclase de View debe implementar el método OnDraw(),donde se define el despliegue gráfico.

El objeto Paint se encarga de establecer las caracteristicasdel objeto gráfico a desplegar.

El objeto Canvas se encarga de desplegar los objetosgráficos (objetos geométricos, texto, paths, etc)

Tambien debe sobrecargarse el evento OnTouchEvent() dondese identifica el tipo de MotionEvent generado por el usuario(UP, DOWN,MOVE).

El repintado se hace con una llamada al método invalidate()

Imágenes interactivas: paintPublic class FingerPaintActivity xtends Activity {Float x,y;Stringaccion="accion";Pathpath=New Path();

@OverrideProtected void onCreate(BundlesavedInstanceState) {Super .onCreate(savedInstanceState);FingerPaintView fpaintv= new FingerPaintView(this);setContentView(fpaintv);}Class FingerPaintView extends View{Public FingerPaintView(Context context) {Super (context);//}@Override

Protected Void onDraw(Canvas canvas) {canvas.drawColor(Color.GRAY );Paint paint= New Paint();paint.setAntiAlias(True );paint.setTextSize(15);canvas.drawText(accion, 10, 10, paint);canvas.drawText("x:"+x, 10, 30, paint);canvas.drawText("y:"+y, 10, 50, paint);paint.setStyle(Style.STROKE);paint.setStrokeWidth(6);paint.setColor(Color.BLUE);

if(accion=="down")path.moveTo(x,y);if(accion=="move")path.lineTo(x,y);canvas.drawPath(path, paint);}

Imágenes interactivas: paint@OverridePublic boolean onTouchEvent(MotionEvent event){x= event.getX();y= event.getY();

If (event.getAction()==MotionEvent.ACTION_DOWN){accion="down";}If (event.getAction()==MotionEvent. ACTION_MOVE){accion="move";}If (event.getAction()== MotionEvent.ACTION_UP){accion="up";}invalidate();

Return true;}}

Audio y video

Formatos

Para audio:

MP3 AAC FLAC OGG WAV MIDI

Para video:

3GPP MPEG-4 WebM MKV

Clases Para audio:

SoundPool, JetPlayer AsyncPlayer AudioTrack

Para video:

VideoView

Ambos: MediaPlayer

MediaPlayer La siguiente interfaz que corresponde al

escuchador de eventos:

• MediaPlayer.OnPreparedListener

Declaramos las variables que necesitemos junto con estas:

• private boolean pause; • private String path; • private int savePos = 0;

MediaPlayer

MediaPlayer

MediaPlayer

Conclusión y preguntas

FIN

José Manuel Castillo Pérez Rafael González Jiménez

Recommended