Android Mediaplayer reproduce archivos locales con variable

Me pregunto si alguien puede ayudarme a descubrir cómo reproducir archivos de audio/video locales en Android Mediaplayer... Puedo transmitir audio/video desde URL usando una variable que contiene la dirección URL, pero ¿cómo hacerlo con archivos locales? ¿Cómo usar la variable localFile para llamar a los archivos locales para jugar? ¡gracias a todos!

package com.ryanleckey2;






import android.media.MediaPlayer;
import android.net.Uri;
import android.os.Bundle;
import android.widget.MediaController;
import android.widget.VideoView;


public class Audio_Video_Stream extends  BT_activity_base{


    private String localFile = "";
    private String localFileName = "";
    private String dataURL = "";
    private String currentURL = "";
    public String thisActivityName = "Screen_Video";

    //movie controller
    String videoUrl;
    VideoView videoView;
    MediaController mediaController;
    public int isLoading;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.screen_video);



        //fill JSON properties...
        dataURL = BT_strings.getJsonPropertyValue(this.screenData.getJsonObject(), "dataURL", "");
        currentURL = dataURL;

        localFileName = BT_strings.getJsonPropertyValue(this.screenData.getJsonObject(), "localFileName", "");


                //setup the saveAsFileName
                if(localFileName.length() > 1){

                    //use the file name in the JSON data...
                localFile = localFileName;  





        //Log.i("ZZ", thisActivityName + ":videoUrl : " + videoUrl);   

        videoView = (VideoView) findViewById(R.id.videoView);
        mediaController = new MediaController(this);
        mediaController.setAnchorView(videoView);
        isLoading = 0;
        }

    }   










    ///////////////////////////////////////////////////
    //activity life-cycle overrides

    //onStart
    @Override 
    protected void onStart(){
        super.onStart();
        //Log.i("ZZ", thisActivityName + ":onStart");
    }

    //onResume
    @Override
    public void onResume() {
        super.onResume();

        if(isLoading == 1){
            if(videoView != null){
                videoView = null;
            }
        }
        startMovie();
        //Log.i("ZZ", thisActivityName + ":onResume");
    }

    //onPause
    @Override
    public void onPause() {
        //Log.i("ZZ", thisActivityName + ":onPause");
        super.onPause();

        if(videoView != null){
            videoView = null;
        }
    }

    //onStop
    @Override 
    protected void onStop(){
        super.onStop();

        //Log.i("ZZ", thisActivityName + ":onStop");
    }   

    //onDestroy
    @Override
    public void onDestroy() {
        //Log.i("ZZ", thisActivityName + ":onDestroy");
        super.onDestroy();
    }

    //activity life-cycle overrides
    ///////////////////////////////////////////////////


    //starts movie
    public void startMovie(){

        //show progress for a few seconds..
        showProgress("Starting media stream...", "Please be patient. If you're on 3G this could take a bit.\nWi-Fi is much better for streaming.");
        isLoading = 1;

        try{
            //set audio/video link (mp4,mp3 format )
            mediaController = new MediaController(this);
            Uri uri = Uri.parse(currentURL);
            //Uri       uri=Uri.parse("android.resource://"+getPackageName()+"/"+R.raw.);  
            videoView.setMediaController(mediaController);
            videoView.setVideoURI(uri);        
            videoView.setOnPreparedListener(mOnPreparedListener);

            videoView.start();

        }catch(Exception je){
        hideProgress();
            showAlert("Invalid URL","The URL to the media could not be determined. This screen will close.");
            finish();
        }

    }

    //onPrepared...
    private MediaPlayer.OnPreparedListener mOnPreparedListener = new MediaPlayer.OnPreparedListener(){
        public void onPrepared(MediaPlayer mp){
            //Log.i("ZZ", thisActivityName + ":OnPreparedListener");
            isLoading = 0;
        //  mp.setLooping(true);
        hideProgress();
        }
    };
}

preguntado el 03 de mayo de 12 a las 21:05

1 Respuestas

Estoy usando reproductor de medios para jugar un local audio archivo ubicado en mi carpeta de activos. Aquí hay un fragmento de mi código. Avíseme si necesita ayuda para implementar. Estas líneas de código están dentro de un método de prueba.

ACTUALIZACIÓN Ok, estoy tomando un tiro en la oscuridad aquí, pero veamos si puedes cambiar tu método de prueba con el mío. Primero, usa esta importación:

import android.content.res.AssetFileDescriptor;

Ahora, dentro de los paréntesis de "probar", intente esto:

 AssetFileDescriptor afd = getAssets().openFd("YOURSOUNDORVIDEO.mp3/mpg");  
 mp.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength()); 
 mp.prepare();
 mp.start(); //play sound or video

En mi código, mp significa mediaplayer. Cámbielo a lo que haya usado para describir su archivo o reproductor local y vea si funciona. Android le dirá qué está mal si hay un problema. Si no es así, entonces necesitaremos experiencia. Pero no puedes culpar a una chica novata por intentarlo, ¿eh?

Respondido el 03 de enero de 20 a las 11:01

Hola, sí, definitivamente necesito ayuda para implementar... lo que sucede es que un panel de control en línea crea el Json que le dice a la aplicación qué mostrar... así que si tengo esta variable para un archivo local y el archivo local está en la carpeta de activos, ¿cómo? para conectar esto juntos? ¡Muy nuevo y agradecido por tu ayuda! - user1120680

Crud... no mencionaste a Json antes lol... No sé qué diablos es eso, nunca trabajé con eso antes. Espera mientras busco una solución a tu problema "especial" :) - Androliyah

¡Gracias! Realmente aprecio tu ayuda... tal vez estoy sobre mi cabeza siendo tan nuevo en todo esto... esperando :) - user1120680

estoy de acuerdo jajaja Deberías hacerlo simple. ¿Por qué usar Json y variables cuando puede tener un reproductor de audio/película incorporado? No sé absolutamente nada sobre Json. Si puede hacer que ese código funcione en su código, lo aplaudo. Todo lo que sé es que "eso" es cómo reproduces un archivo local. jajaja. - Androliyah

Sin embargo, se lo diré por adelantado: su pregunta debe ser respondida por un desarrollador senior. Por senior, me refiero a no novatos como nosotros :p Al menos nadie puede señalarme con el dedo porque soy una chica y podemos cometer errores :) - Androliyah

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.