I do really like Android, unsuspectingly so. It was my New Year’s resolution to finally write an app, and I got this assignment at work to create… the quick business card app. Available in the marketplace. 10 installs in 1 day! Already an upgrade!
OK so I decided to port one of our iPhone apps- French Bingo- over to ‘droid. I immediately ran into a problem. How to play a sound. It wouldn’t play. I copied code from examples, it wouldn’t play. As in most the debugging helped me learn more about the environment, but to cut to the chase, here was the solution:
Enable the emulator to play sound. (d’oh!)
To do this:
1) Launch Eclipse (for Mac), select Run->Run Configs.
2) Select “Android Application” (left pane)
3) Select the “Target” tab in right pane.
4) Scroll down to the hidden field, “Additional Emulator Command Line Options”
5) add “-useaudio”
(Geesh). Yes, my biggest gripe so far with development is that it’s Eclipse environment on a Mac. Most documentation is for Eclipse on a PC, and things like enabling audio are too simple to mention in most blog posts or examples. So here! The internet has a blog post about it.
Here is the code for a simple example of playing a sound. My pet peeve is folks not including library/class calls, so here they are in entirity!
package com.banane.bingueau;
import android.app.Activity;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
public class BingueauActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
public void playWord(View v){
try{
MediaPlayer mp = MediaPlayer.create(getBaseContext(), R.raw.salon);
if (mp != null) {
mp.start();
}
mp.setOnCompletionListener(mCompletionListener);
} catch (Exception e){
//Log.d("error",e.getMessage());
}
}
private MediaPlayer.OnCompletionListener mCompletionListener = new MediaPlayer.OnCompletionListener() {
public void onCompletion(MediaPlayer mp) {
mp.release();
}
};
}
My XML for the layout has a button, “word1” with an “onClick” attribute. That’s how I’m listening for the event:
Any comments/advice/thoughts are welcome of course.