help with this code snippet please!

All your problems with Audio, Video and Images.

help with this code snippet please!

Postby redmote » Wed Jun 09, 2010 1:34 am

Hey guys,

I am an Android newbie, and as a side project for school, I made a universal remote app and module for the Android. You can see the site and view the sources I used to create the project. In fact, I used a lot of information on here to create my code, particularly the mp3 player tutorial from plusminus. The project I did can be seen here:

http://redmote.markfazzio.com

Anyway, I believe I have a memory leak in the code as the application crashes eventually after enough buttons are pressed. The code simply makes buttons play .wav files from res/raw when pressed. I have the code up on the download page on the above website, but I will post one of the java files on here so you can see how I did it.

I am an aspiring Android developer and would appreciate any help or direction you guys could provide. Thanks!

Code: Select all
package music.player;

import java.io.IOException;


import android.app.Activity;
import android.content.Intent;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnCompletionListener;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;



public class MusicPlayer2 extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        setContentView(R.layout.projector);
       
       
       
        // Find the Button from the xml-file.
       
        Button proj_pwr = (Button)this.findViewById(R.id.proj_pwr);
        Button proj_poweroff = (Button)this.findViewById(R.id.proj_poweroff);
        Button proj_volup = (Button)this.findViewById(R.id.proj_volup);
        Button proj_voldn = (Button)this.findViewById(R.id.proj_voldn);
        Button proj_magup = (Button)this.findViewById(R.id.proj_magup);
        Button proj_magdn = (Button)this.findViewById(R.id.proj_magdn);
        Button proj_right = (Button)this.findViewById(R.id.proj_right);
        Button proj_left = (Button)this.findViewById(R.id.proj_left);
        Button proj_down = (Button)this.findViewById(R.id.proj_down);
        Button proj_up = (Button)this.findViewById(R.id.proj_up);
        Button codes_play = (Button) findViewById(R.id.Button02);
       
       
       
        proj_pwr.setOnClickListener(new OnClickListener(){

             //  @Override
               public void onClick(View arg0) {
                    MediaPlayer mp = MediaPlayer.create(MusicPlayer2.this,
                              R.raw.proj_pwr);
                    try {
                  mp.prepare();
               } catch (IllegalStateException e) {
                  // TODO Auto-generated catch block
                  e.printStackTrace();
               } catch (IOException e) {
                  // TODO Auto-generated catch block
                  e.printStackTrace();
               }
                    mp.start();
                    // i.e. react on the end of the music-file:
                    mp.setOnCompletionListener(new OnCompletionListener(){

                         // @Override
                         public void onCompletion(MediaPlayer arg0) {
       
                           
                         
                 
                            // File has ended !!!
                         }
                    });
               }
        });
   


   
        proj_volup.setOnClickListener(new OnClickListener(){

        //  @Override
          public void onClick(View arg0) {
               MediaPlayer mp = MediaPlayer.create(MusicPlayer2.this,
                         R.raw.btn_3);
               try {
               mp.prepare();
            } catch (IllegalStateException e) {
               // TODO Auto-generated catch block
               e.printStackTrace();
            } catch (IOException e) {
               // TODO Auto-generated catch block
               e.printStackTrace();
            }
               mp.start();
               // i.e. react on the end of the music-file:
               mp.setOnCompletionListener(new OnCompletionListener(){

                    // @Override
                    public void onCompletion(MediaPlayer arg0) {
 
                      
                     
            
                       // File has ended !!!
                    }
               });
          }
   });
   
        proj_voldn.setOnClickListener(new OnClickListener(){

        //  @Override
          public void onClick(View arg0) {
               MediaPlayer mp = MediaPlayer.create(MusicPlayer2.this,
                         R.raw.btn_4);
               try {
               mp.prepare();
            } catch (IllegalStateException e) {
               // TODO Auto-generated catch block
               e.printStackTrace();
            } catch (IOException e) {
               // TODO Auto-generated catch block
               e.printStackTrace();
            }
               mp.start();
               // i.e. react on the end of the music-file:
               mp.setOnCompletionListener(new OnCompletionListener(){

                    // @Override
                    public void onCompletion(MediaPlayer arg0) {
 
                      
                     
            
                       // File has ended !!!
                    }
               });
          }
   });
   
        proj_magup.setOnClickListener(new OnClickListener(){

        //  @Override
          public void onClick(View arg0) {
               MediaPlayer mp = MediaPlayer.create(MusicPlayer2.this,
                         R.raw.btn_5);
               try {
               mp.prepare();
            } catch (IllegalStateException e) {
               // TODO Auto-generated catch block
               e.printStackTrace();
            } catch (IOException e) {
               // TODO Auto-generated catch block
               e.printStackTrace();
            }
               mp.start();
               // i.e. react on the end of the music-file:
               mp.setOnCompletionListener(new OnCompletionListener(){

                    // @Override
                    public void onCompletion(MediaPlayer arg0) {
 
                      
                     
            
                       // File has ended !!!
                    }
               });
          }
   });
   
        proj_magdn.setOnClickListener(new OnClickListener(){

        //  @Override
          public void onClick(View arg0) {
               MediaPlayer mp = MediaPlayer.create(MusicPlayer2.this,
                         R.raw.btn_6);
               try {
               mp.prepare();
            } catch (IllegalStateException e) {
               // TODO Auto-generated catch block
               e.printStackTrace();
            } catch (IOException e) {
               // TODO Auto-generated catch block
               e.printStackTrace();
            }
               mp.start();
               // i.e. react on the end of the music-file:
               mp.setOnCompletionListener(new OnCompletionListener(){

                    // @Override
                    public void onCompletion(MediaPlayer arg0) {
 
                      
                     
            
                       // File has ended !!!
                    }
               });
          }
   });

    proj_right.setOnClickListener(new OnClickListener(){

        //  @Override
          public void onClick(View arg0) {
               MediaPlayer mp = MediaPlayer.create(MusicPlayer2.this,
                         R.raw.btn_7);
               try {
               mp.prepare();
            } catch (IllegalStateException e) {
               // TODO Auto-generated catch block
               e.printStackTrace();
            } catch (IOException e) {
               // TODO Auto-generated catch block
               e.printStackTrace();
            }
               mp.start();
               // i.e. react on the end of the music-file:
               mp.setOnCompletionListener(new OnCompletionListener(){

                    // @Override
                    public void onCompletion(MediaPlayer arg0) {
 
                      
                     
            
                       // File has ended !!!
                    }
               });
          }
   });
   
    proj_left.setOnClickListener(new OnClickListener(){

        //  @Override
          public void onClick(View arg0) {
               MediaPlayer mp = MediaPlayer.create(MusicPlayer2.this,
                         R.raw.btn_8);
               try {
               mp.prepare();
            } catch (IllegalStateException e) {
               // TODO Auto-generated catch block
               e.printStackTrace();
            } catch (IOException e) {
               // TODO Auto-generated catch block
               e.printStackTrace();
            }
               mp.start();
               // i.e. react on the end of the music-file:
               mp.setOnCompletionListener(new OnCompletionListener(){

                    // @Override
                    public void onCompletion(MediaPlayer arg0) {
 
                      
                     
            
                       // File has ended !!!
                    }
               });
          }
   });
   
    proj_down.setOnClickListener(new OnClickListener(){

        //  @Override
          public void onClick(View arg0) {
               MediaPlayer mp = MediaPlayer.create(MusicPlayer2.this,
                         R.raw.btn_9);
               try {
               mp.prepare();
            } catch (IllegalStateException e) {
               // TODO Auto-generated catch block
               e.printStackTrace();
            } catch (IOException e) {
               // TODO Auto-generated catch block
               e.printStackTrace();
            }
               mp.start();
               // i.e. react on the end of the music-file:
               mp.setOnCompletionListener(new OnCompletionListener(){

                    // @Override
                    public void onCompletion(MediaPlayer arg0) {
 
                      
                     
            
                       // File has ended !!!
                    }
               });
          }
   });
   
    proj_up.setOnClickListener(new OnClickListener(){

        //  @Override
          public void onClick(View arg0) {
               MediaPlayer mp = MediaPlayer.create(MusicPlayer2.this,
                         R.raw.btn_0);
               try {
               mp.prepare();
            } catch (IllegalStateException e) {
               // TODO Auto-generated catch block
               e.printStackTrace();
            } catch (IOException e) {
               // TODO Auto-generated catch block
               e.printStackTrace();
            }
               mp.start();
               // i.e. react on the end of the music-file:
               mp.setOnCompletionListener(new OnCompletionListener(){

                    // @Override
                    public void onCompletion(MediaPlayer arg0) {
                       
                      
                     
            
                       // File has ended !!!
                    }
               });
          }
   });
   
    proj_poweroff.setOnClickListener(new OnClickListener(){

        //  @Override
          public void onClick(View arg0) {
               MediaPlayer mp = MediaPlayer.create(MusicPlayer2.this,
                         R.raw.btn_2);
               try {
               mp.prepare();
            } catch (IllegalStateException e) {
               // TODO Auto-generated catch block
               e.printStackTrace();
            } catch (IOException e) {
               // TODO Auto-generated catch block
               e.printStackTrace();
            }
               mp.start();
               // i.e. react on the end of the music-file:
               mp.setOnCompletionListener(new OnCompletionListener(){

                    // @Override
                    public void onCompletion(MediaPlayer arg0) {
                       
                      
                     
            
                       // File has ended !!!
                    }
               });
          }
   });

   
    codes_play.setOnClickListener(new View.OnClickListener() {
        public void onClick(View view) {
            Intent intent = new Intent();
            setResult(RESULT_OK, intent);
            finish();
        }

    });
}
 

}
redmote
Freshman
Freshman
 
Posts: 9
Joined: Wed Mar 10, 2010 1:25 am

Top

Re: help with this code snippet please!

Postby winkle » Wed Jul 07, 2010 9:31 pm

Try to call release() method of the active MediaPlayer before creating new.
winkle
Junior Developer
Junior Developer
 
Posts: 10
Joined: Tue Jun 15, 2010 7:54 am

Re: help with this code snippet please!

Postby anarche » Thu Jul 08, 2010 12:04 am

Also you'll find it easier for us to help you if you provide the logcat to the crash.

See my sig.
anarche
Master Developer
Master Developer
 
Posts: 369
Joined: Sun Apr 11, 2010 5:21 am

Re: help with this code snippet please!

Postby blundell » Thu Jul 08, 2010 8:58 am

Little cheat - you could remove your e.printStackTrace() from your try catch blocks if you believe it can still work if one of these fails. i.e. cheat. Not sure about the programming correctness of this, but I do it :-)

i.e. you can attempt to release your resource or stop the video even if it was already stopped
User avatar
blundell
Master Developer
Master Developer
 
Posts: 1610
Joined: Tue Nov 18, 2008 12:58 pm
Location: UK

Top

Return to Multimedia Problems

Who is online

Users browsing this forum: No registered users and 28 guests