Question

My code seems fine but suddenly after cleaning up my code i started reviving a run time error please help :

Error Log :

    05-04 02:13:13.556: E/MediaPlayer(16609): start called in state 4
05-04 02:13:13.556: E/MediaPlayer(16609): error (-38, 0)
05-04 02:13:13.556: E/MediaPlayer(16609): Error (-38,0)
05-04 02:13:13.558: D/AndroidRuntime(16609): Shutting down VM
05-04 02:13:13.558: W/dalvikvm(16609): threadid=1: thread exiting with uncaught exception (group=0x41c88d40)
05-04 02:13:13.564: E/AndroidRuntime(16609): FATAL EXCEPTION: main
05-04 02:13:13.564: E/AndroidRuntime(16609): Process: com.ayush.mymusicplayer, PID: 16609
05-04 02:13:13.564: E/AndroidRuntime(16609): java.lang.RuntimeException: Error receiving broadcast Intent { act=com.ayush.mymusicplayer.seekprogress flg=0x10 (has extras) } in com.ayush.mymusicplayer.MyMainActivity$1@42553a80
05-04 02:13:13.564: E/AndroidRuntime(16609):    at android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:778)
05-04 02:13:13.564: E/AndroidRuntime(16609):    at android.os.Handler.handleCallback(Handler.java:733)
05-04 02:13:13.564: E/AndroidRuntime(16609):    at android.os.Handler.dispatchMessage(Handler.java:95)
05-04 02:13:13.564: E/AndroidRuntime(16609):    at android.os.Looper.loop(Looper.java:136)
05-04 02:13:13.564: E/AndroidRuntime(16609):    at android.app.ActivityThread.main(ActivityThread.java:5102)
05-04 02:13:13.564: E/AndroidRuntime(16609):    at java.lang.reflect.Method.invokeNative(Native Method)
05-04 02:13:13.564: E/AndroidRuntime(16609):    at java.lang.reflect.Method.invoke(Method.java:515)
05-04 02:13:13.564: E/AndroidRuntime(16609):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
05-04 02:13:13.564: E/AndroidRuntime(16609):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
05-04 02:13:13.564: E/AndroidRuntime(16609):    at dalvik.system.NativeStart.main(Native Method)
05-04 02:13:13.564: E/AndroidRuntime(16609): Caused by: java.lang.NumberFormatException: Invalid int: "null"
05-04 02:13:13.564: E/AndroidRuntime(16609):    at java.lang.Integer.invalidInt(Integer.java:137)
05-04 02:13:13.564: E/AndroidRuntime(16609):    at java.lang.Integer.parseInt(Integer.java:354)
05-04 02:13:13.564: E/AndroidRuntime(16609):    at java.lang.Integer.parseInt(Integer.java:331)
05-04 02:13:13.564: E/AndroidRuntime(16609):    at com.ayush.mymusicplayer.MyMainActivity.updateUI(MyMainActivity.java:356)
05-04 02:13:13.564: E/AndroidRuntime(16609):    at com.ayush.mymusicplayer.MyMainActivity.access$0(MyMainActivity.java:352)
05-04 02:13:13.564: E/AndroidRuntime(16609):    at com.ayush.mymusicplayer.MyMainActivity$1.onReceive(MyMainActivity.java:348)
05-04 02:13:13.564: E/AndroidRuntime(16609):    at android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:768)
05-04 02:13:13.564: E/AndroidRuntime(16609):    ... 9 more
05-04 02:13:18.279: I/Process(16609): Sending signal. PID: 16609 SIG: 9

MyMainActivity : (Error seems to be pointing the reviver - "broadcastReceiver" in this class which receive the info for seekbar ! the error occurs when i start playSong() )

public class MyMainActivity extends Activity implements OnSeekBarChangeListener {

    private ImageButton btnPlay;
    private ImageButton btnForward;
    private ImageButton btnBackward;
    private ImageButton btnNext;
    private ImageButton btnPrevious;
    private ImageButton btnPlaylist;
    private ImageButton btnRepeat;
    private ImageButton btnShuffle;
    private TextView songTitleLabel;
    private TextView songCurrentDurationLabel;
    private TextView songTotalDurationLabel;

    private SeekBar songProgressBar;
    private int seekMax;
    private int seekProgress;
    private static int songEnded = 0;
    boolean mBroadcastIsRegistered;
    private int seekPos;

    private SongsManager songManager;
    private Utilities utils;
    private int seekForwardTime = 5000; // 5000 milliseconds
    private int seekBackwardTime = 5000; // 5000 milliseconds
    private int currentSongIndex = 0;
    private boolean isShuffle = false;
    private boolean isRepeat = false;
    private boolean startedPlaying = false;
    private boolean paused = false;

    private ArrayList<HashMap<String, String>> songsList = new ArrayList<HashMap<String, String>>();
    Intent serviceIntent;

    // Broadcasting
    Intent broadcastStateIntent;
    public static final String BROADCASTING = "com.ayush.mymusicplayer.broadcasting";

    // --Set up constant ID for broadcast of seekbar position--
    public static final String BROADCAST_SEEKBAR = "com.ayush.mymusicplayer.sendseekbar";
    Intent intent;

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

        try {
            // All player buttons
            btnPlay = (ImageButton) findViewById(R.id.btnPlay);
            btnForward = (ImageButton) findViewById(R.id.btnForward);
            btnBackward = (ImageButton) findViewById(R.id.btnBackward);
            btnNext = (ImageButton) findViewById(R.id.btnNext);
            btnPrevious = (ImageButton) findViewById(R.id.btnPrevious);
            btnPlaylist = (ImageButton) findViewById(R.id.btnPlaylist);
            btnRepeat = (ImageButton) findViewById(R.id.btnRepeat);
            btnShuffle = (ImageButton) findViewById(R.id.btnShuffle);
            songProgressBar = (SeekBar) findViewById(R.id.songProgressBar);
            songTitleLabel = (TextView) findViewById(R.id.songTitle);
            songCurrentDurationLabel = (TextView) findViewById(R.id.songCurrentDurationLabel);
            songTotalDurationLabel = (TextView) findViewById(R.id.songTotalDurationLabel);

            songManager = new SongsManager();
            utils = new Utilities();

            // --- set up seekbar intent for broadcasting new position to
            // service ---
            intent = new Intent(BROADCAST_SEEKBAR);

            broadcastStateIntent = new Intent(BROADCASTING);

            serviceIntent = new Intent(this, myPlayService.class);

            // Getting all songs list
            songsList = songManager.getPlayList();

            // set the starting title song
            songTitleLabel.setText(songsList.get(0).get("songTitle"));


            // Listeners
            songProgressBar.setOnSeekBarChangeListener(this);

            /**
             * Play button click event
             * plays a song and changes button to pause image
             * pauses a song and changes button to play image
             * */
            btnPlay.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View arg0) {
                    // check for already playing

                    if (startedPlaying == false && paused == false) {
                        // Changing button image to pause button
                        btnPlay.setImageResource(R.drawable.btn_pause);
                        playSong(currentSongIndex);
                        startedPlaying = true;
                        paused = false;
                    } else if (startedPlaying == false && paused == true) {
                        // Changing button image to play button
                        btnPlay.setImageResource(R.drawable.btn_pause);
                        resumingBroadcast();
                        paused = false;
                        startedPlaying = true;
                    }

                    else if (startedPlaying == true && paused == false) {
                        // Changing button image to play button
                        btnPlay.setImageResource(R.drawable.btn_play);
                        pausingBroadcast();
                        paused = true;
                        startedPlaying = false;
                    }
                }

            });

            /**
             * Forward button click event Forwards song specified seconds
             * */
            btnForward.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View arg0) {
                    // check if seekForward time is lesser than song duration
                    if (seekProgress + seekForwardTime <= seekMax) {
                        // forward song
                        seekPos = seekProgress + seekForwardTime;
                        intent.putExtra("seekpos", seekPos);
                        sendBroadcast(intent);
                    } else {
                        // forward to end position
                        seekPos = seekMax;
                        intent.putExtra("seekpos", seekPos);
                        sendBroadcast(intent);
                    }
                }
            });

            /**
             * Backward button click event Backward song to specified seconds
             * */
            btnBackward.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View arg0) {
                    // check if seekBackward time is greater than 0 sec
                    if (seekProgress - seekBackwardTime >= 0) {
                        // forward song
                        seekPos = seekProgress + seekBackwardTime;
                        intent.putExtra("seekpos", seekPos);
                        sendBroadcast(intent);
                    } else {
                        // backward to starting position
                        intent.putExtra("seekpos", 0);
                        sendBroadcast(intent);
                    }
                }
            });

            /**
             * Button Click event for Play list click event Launches list
             * activity which displays list of songs
             * */
            btnPlaylist.setOnClickListener(new View.OnClickListener() {

                @Override
                public void onClick(View arg0) {
                    Intent i = new Intent(getApplicationContext(),
                            PlayListActivity.class);
                    startActivityForResult(i, 100);
                }
            });

            /**
             * Next button click event Plays next song by taking
             * currentSongIndex + 1
             * */
            btnNext.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View arg0) {
                    if (isShuffle) {
                        // shuffle is on - play a random song
                        Random rand = new Random();
                        currentSongIndex = rand.nextInt((songsList.size() - 1) - 0 + 1) + 0;
                        playSong(currentSongIndex);
                    } else {
                        // check if next song is there or not
                        if (currentSongIndex < (songsList.size() - 1)) {
                            playSong(currentSongIndex + 1);
                            currentSongIndex = currentSongIndex + 1;
                        } else {
                            // play first song
                            playSong(0);
                            currentSongIndex = 0;
                        }
                    }
                }
            });

            /**
             * Back button click event Plays previous song by currentSongIndex -
             * 1
             * */
            btnPrevious.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View arg0) {
                    if (isShuffle) {
                        // shuffle is on - play a random song
                        Random rand = new Random();
                        currentSongIndex = rand.nextInt((songsList.size() - 1) - 0 + 1) + 0;
                        playSong(currentSongIndex);
                    } else {
                        if (currentSongIndex > 0) {
                            playSong(currentSongIndex - 1);
                            currentSongIndex = currentSongIndex - 1;
                        } else {
                            // play last song
                            playSong(songsList.size() - 1);
                            currentSongIndex = songsList.size() - 1;
                        }
                    }
                }
            });

            /**
             * Button Click event for Repeat button Enables repeat flag to true
             * */
            btnRepeat.setOnClickListener(new View.OnClickListener() {

                @Override
                public void onClick(View arg0) {
                    if (isRepeat) {
                        isRepeat = false;
                        Toast.makeText(getApplicationContext(),
                                "Repeat is OFF", Toast.LENGTH_SHORT).show();
                        btnRepeat.setImageResource(R.drawable.btn_repeat);
                    } else {
                        // make repeat to true
                        isRepeat = true;
                        Toast.makeText(getApplicationContext(), "Repeat is ON",
                                Toast.LENGTH_SHORT).show();
                        // make shuffle to false
                        isShuffle = false;
                        btnRepeat
                                .setImageResource(R.drawable.btn_repeat_focused);
                        btnShuffle.setImageResource(R.drawable.btn_shuffle);
                    }
                }
            });

            /**
             * Button Click event for Shuffle button Enables shuffle flag to
             * true
             * */
            btnShuffle.setOnClickListener(new View.OnClickListener() {

                @Override
                public void onClick(View arg0) {
                    if (isShuffle) {
                        isShuffle = false;
                        Toast.makeText(getApplicationContext(),
                                "Shuffle is OFF", Toast.LENGTH_SHORT).show();
                        btnShuffle.setImageResource(R.drawable.btn_shuffle);
                    } else {
                        // make repeat to true
                        isShuffle = true;
                        Toast.makeText(getApplicationContext(),
                                "Shuffle is ON", Toast.LENGTH_SHORT).show();
                        // make shuffle to false
                        isRepeat = false;
                        btnShuffle
                                .setImageResource(R.drawable.btn_shuffle_focused);
                        btnRepeat.setImageResource(R.drawable.btn_repeat);
                    }
                }
            });

        } catch (Exception e) {
            e.printStackTrace();
            Toast.makeText(getApplicationContext(),
                    e.getClass().getName() + " " + e.getMessage(),
                    Toast.LENGTH_LONG).show();
        }

    }
    /**
     * Receiving song index from playlist view and play the song
     * */
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (resultCode == 100) {
            currentSongIndex = data.getExtras().getInt("songIndex");
            // play selected song
            playSong(currentSongIndex);
        }

    }

    // -- onPause, unregister broadcast receiver. To improve, also save screen data ---
    @Override
    protected void onPause() {
        // Unregister broadcast receiver
        if (mBroadcastIsRegistered) {
            unregisterReceiver(broadcastReceiver);
            mBroadcastIsRegistered = false;
        }
        super.onPause();
    }

    // -- onResume register broadcast receiver. To improve, retrieve saved screen data ---
    @Override
    protected void onResume() {
        // Register broadcast receiver
        if (!mBroadcastIsRegistered) {
            registerReceiver(broadcastReceiver, new IntentFilter(
                    myPlayService.BROADCAST_ACTION));
            mBroadcastIsRegistered = true;
        }
        super.onResume();
    }

    // -- Broadcast Receiver to update position of seekbar from service --
    private BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
        public void onReceive(Context context, Intent serviceIntent) {
            updateUI(serviceIntent);
        }
    };

    private void updateUI(Intent serviceIntent) {
        String counter = serviceIntent.getStringExtra("counter");
        String mediamax = serviceIntent.getStringExtra("mediamax");
        String strSongEnded = serviceIntent.getStringExtra("song_ended");
        seekProgress = Integer.parseInt(counter);

        seekMax = Integer.parseInt(mediamax);
        songEnded = Integer.parseInt(strSongEnded);
        songProgressBar.setMax(seekMax);
        songProgressBar.setProgress(seekProgress);
        // Displaying Total Duration time
        songTotalDurationLabel.setText("" + utils.milliSecondsToTimer(seekMax));
        // Displaying time completed playing
        songCurrentDurationLabel.setText(""
                + utils.milliSecondsToTimer(seekProgress));

        if (songEnded == 1) {
            // check for repeat is ON or OFF
            if (isRepeat) {
                // repeat is on play same song again
                playSong(currentSongIndex);
            } else if (isShuffle) {
                // shuffle is on - play a random song
                Random rand = new Random();
                currentSongIndex = rand.nextInt((songsList.size() - 1) - 0 + 1) + 0;
                playSong(currentSongIndex);
            } else {
                // no repeat or shuffle ON - play next song
                if (currentSongIndex < (songsList.size() - 1)) {
                    playSong(currentSongIndex + 1);
                    currentSongIndex = currentSongIndex + 1;
                } else {
                    // play first song
                    playSong(0);
                    currentSongIndex = 0;
                }
            }
        }
    }

    // Send a message to Server to pause
    private void pausingBroadcast() {
        // Log.v(TAG, "BufferCompleteSent");
        broadcastStateIntent.putExtra("Broadcasting", "0");
        paused = true;
        btnPlay.setImageResource(R.drawable.btn_play);
        sendBroadcast(broadcastStateIntent);

    }

    // Send a message to Server to resume
    private void resumingBroadcast() {
        broadcastStateIntent.putExtra("Broadcasting", "1");
        paused = false;
        btnPlay.setImageResource(R.drawable.btn_pause);
        sendBroadcast(broadcastStateIntent);

    }


    // Function to play a song
    public void playSong(int songIndex) {

        stopMyPlayService();
        paused = false;
        startedPlaying = true;
        serviceIntent.putExtra("currentSongIndex", songIndex);

        // -- Register receiver for seekbar--
        registerReceiver(broadcastReceiver, new IntentFilter(
                myPlayService.BROADCAST_ACTION));
        mBroadcastIsRegistered = true;

        try {

            startService(serviceIntent);

            // Displaying Song title
            String songTitle = songsList.get(songIndex).get("songTitle");
            songTitleLabel.setText(songTitle);

            // Changing Button Image to pause image
            btnPlay.setImageResource(R.drawable.btn_pause);

            // set Progress bar values
            songProgressBar.setProgress(0);
            songProgressBar.setMax(100);

        } catch (Exception e) {
            e.printStackTrace();
            Toast.makeText(getApplicationContext(),
                    e.getClass().getName() + " " + e.getMessage(),
                    Toast.LENGTH_LONG).show();
        }
    }

    private void stopMyPlayService() {

        // --Unregister broadcastReceiver for seekbar
        if (mBroadcastIsRegistered) {
            try {
                unregisterReceiver(broadcastReceiver);

                mBroadcastIsRegistered = false;
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
                Toast.makeText(
                getApplicationContext(),
                e.getClass().getName() + " " + e.getMessage(),
                Toast.LENGTH_LONG).show();
            }
        }

        try {
            stopService(serviceIntent);

        } catch (Exception e) {
            e.printStackTrace();
            Toast.makeText(getApplicationContext(),
                    e.getClass().getName() + " " + e.getMessage(),
                    Toast.LENGTH_LONG).show();
        }
    }

    // --- When user manually moves seekbar, broadcast new position to service
    @Override
    public void onProgressChanged(SeekBar sb, int progress, boolean fromUser) {
        // TODO Auto-generated method stub
        if (fromUser) {
            seekPos = sb.getProgress();
            intent.putExtra("seekpos", seekPos);
            sendBroadcast(intent);
        }
    }

    @Override
    public void onStartTrackingTouch(SeekBar arg0) {
        // TODO Auto-generated method stub

    }

    @Override
    public void onStopTrackingTouch(SeekBar arg0) {
        // TODO Auto-generated method stub

    }

}

myPlayService : (the class which is broadcasting messages)

public class myPlayService extends Service implements OnCompletionListener,
        OnPreparedListener, OnSeekCompleteListener, OnErrorListener {

    // Media Player
    private MediaPlayer mp;

    private int currentSongIndex;
    private ArrayList<HashMap<String, String>> songsList = new ArrayList<HashMap<String, String>>();
    private SongsManager songManager;

    // Pausing when phone call
    private boolean isPausedInCall = false;
    private PhoneStateListener phoneStateListener;
    private TelephonyManager telephonyManager;

    // Declare headsetSwitch variable
    private int headsetSwitch = 1;

    // ---Variables for seekbar processing---
    Intent seekIntent;
    String sntSeekPos;
    int intSeekPos;
    int mediaPosition;
    int mediaMax;
    private final Handler handler = new Handler();
    private int songEnded = 0;
    public static final String BROADCAST_ACTION = "com.ayush.mymusicplayer.seekprogress";

    public void onCreate() {

        // ---Set up intent for seekbar broadcast ---
        seekIntent = new Intent(BROADCAST_ACTION);

        // Register headset receiver
        registerReceiver(headsetReceiver, new IntentFilter(
                Intent.ACTION_HEADSET_PLUG));

        songManager = new SongsManager();
        songsList = songManager.getPlayList();

        mp = new MediaPlayer();
        mp.setOnCompletionListener(this);
        mp.setOnPreparedListener(this);
        mp.setOnSeekCompleteListener(this);
        mp.setOnErrorListener(this);
        mp.reset();

    }

    public int onStartCommand(Intent intent, int flags, int startId) {

        // ---Set up receiver for State change ---
        registerReceiver(broadcastActivityReceiver, new IntentFilter(
                MyMainActivity.BROADCASTING));

        // ---Set up receiver for seekbar change ---
        registerReceiver(broadcastReceiver, new IntentFilter(
                MyMainActivity.BROADCAST_SEEKBAR));

        // Manage incoming phone calls during playback. Pause mp on incoming,
        // resume on hangup.
        // -----------------------------------------------------------------------------------
        // Get the telephony manager
        telephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
        phoneStateListener = new PhoneStateListener() {
            @Override
            public void onCallStateChanged(int state, String incomingNumber) {
                switch (state) {
                case TelephonyManager.CALL_STATE_OFFHOOK:
                case TelephonyManager.CALL_STATE_RINGING:
                    if (mp != null) {
                        pauseMedia();
                        isPausedInCall = true;
                    }

                    break;
                case TelephonyManager.CALL_STATE_IDLE:
                    // Phone idle. Start playing.
                    if (mp != null) {
                        if (isPausedInCall) {
                            isPausedInCall = false;
                            playMedia();
                        }

                    }
                    break;
                }

            }
        };

        // Register the listener with the telephony manager
        telephonyManager.listen(phoneStateListener,
                PhoneStateListener.LISTEN_CALL_STATE);

        // Getting song Index from MyMainActivity
        currentSongIndex = intent.getExtras().getInt("currentSongIndex");
        mp.reset();

        if (!mp.isPlaying()) {
            try {

                mp.setDataSource(songsList.get(currentSongIndex)
                        .get("songPath"));
                mp.prepareAsync();

            } catch (IllegalArgumentException e) {
                e.printStackTrace();
            } catch (IllegalStateException e) {
                e.printStackTrace();
            } catch (IOException e) {
            }
        }

        // --- Set up seekbar handler ---
        setupHandler();

        return START_STICKY;

    }

    // If headset gets unplugged, stop music and service.
    private BroadcastReceiver headsetReceiver = new BroadcastReceiver() {
        private boolean headsetConnected = false;

        @Override
        public void onReceive(Context context, Intent intent) {
            // TODO Auto-generated method stub
            if (intent.hasExtra("state")) {
                if (headsetConnected && intent.getIntExtra("state", 0) == 0) {
                    headsetConnected = false;
                    headsetSwitch = 0;
                } else if (!headsetConnected
                        && intent.getIntExtra("state", 0) == 1) {
                    headsetConnected = true;
                    headsetSwitch = 1;
                }
            }

            switch (headsetSwitch) {
            case (0):
                pauseMedia();
                break;
            case (1):
                playMedia();
                break;
            }
        }
    };

    // ---Send seekbar info to activity----
    private void setupHandler() {
        handler.removeCallbacks(sendUpdatesToUI);
        handler.postDelayed(sendUpdatesToUI, 250); // 0.25 second
    }

    private Runnable sendUpdatesToUI = new Runnable() {
        public void run() {
            LogMediaPosition();
            handler.postDelayed(this, 250); // 0.25 seconds
        }
    };

    private void LogMediaPosition() {
        if (mp.isPlaying()) {
            mediaPosition = mp.getCurrentPosition();
            mediaMax = mp.getDuration();
            seekIntent.putExtra("counter", String.valueOf(mediaPosition));
            seekIntent.putExtra("mediamax", String.valueOf(mediaMax));
            seekIntent.putExtra("song_ended", String.valueOf(songEnded));
            sendBroadcast(seekIntent);
        }

    }

    // --Receive seekbar position if it has been changed by the user in the
    // activity
    private BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            updateSeekPos(intent);
        }
    };

    // Update seek position from Activity
    public void updateSeekPos(Intent intent) {
        int seekPos = intent.getIntExtra("seekpos", 0);
        if (mp.isPlaying()) {
            handler.removeCallbacks(sendUpdatesToUI);
            mp.seekTo(seekPos);
            setupHandler();
        }
    }

    // Play Song After Complition !
    @Override
    public void onSeekComplete(MediaPlayer mp) {
        if (!mp.isPlaying()) {
            playMedia();
        }

    }

    public void onPrepared(MediaPlayer arg0) {
        // Send a message to activity to end progress dialogue
        playMedia();
    }

    // Set up broadcast receiver
    private BroadcastReceiver broadcastActivityReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent broadcastIntent) {
            String broadcastValue = broadcastIntent
                    .getStringExtra("Broadcasting");
            int broadcastIntValue = Integer.parseInt(broadcastValue);

            switch (broadcastIntValue) {
            case 0:
                pauseMedia();
                break;

            case 1:
                playMedia();
                break;
            }
        }
    };

    public void pauseMedia() {
        if (mp.isPlaying()) {
            mp.pause();
        }
    }

    public void playMedia() {
        if (!mp.isPlaying()) {
            mp.start();
        }
    }

    @Override
    public void onCompletion(MediaPlayer arg0) {
        seekIntent.putExtra("song_ended", "1");
        sendBroadcast(seekIntent);
        stopSelf();
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        if (mp != null) {
            if (mp.isPlaying()) {
                mp.stop();
            }
            mp.reset();
            mp.release();
        }
        if (phoneStateListener != null) {
            telephonyManager.listen(phoneStateListener,
                    PhoneStateListener.LISTEN_NONE);
        }
        // Stop the seekbar handler from sending updates to UI
        handler.removeCallbacks(sendUpdatesToUI);
        unregisterReceiver(headsetReceiver);
        // Unregister seekbar receiver
        unregisterReceiver(broadcastReceiver);
        unregisterReceiver(broadcastActivityReceiver);
        stopSelf();
    }

    // ---Error processing ---
    @Override
    public boolean onError(MediaPlayer mp, int what, int extra) {
        switch (what) {
        case MediaPlayer.MEDIA_ERROR_NOT_VALID_FOR_PROGRESSIVE_PLAYBACK:
            Toast.makeText(this,
                    "MEDIA ERROR NOT VALID FOR PROGRESSIVE PLAYBACK " + extra,
                    Toast.LENGTH_SHORT).show();
            break;
        case MediaPlayer.MEDIA_ERROR_SERVER_DIED:
            Toast.makeText(this, "MEDIA ERROR SERVER DIED " + extra,
                    Toast.LENGTH_SHORT).show();
            break;
        case MediaPlayer.MEDIA_ERROR_UNKNOWN:
            Toast.makeText(this, "MEDIA ERROR UNKNOWN " + extra,
                    Toast.LENGTH_SHORT).show();
            break;
        }
        return false;
    }

    @Override
    public IBinder onBind(Intent arg0) {
        // TODO Auto-generated method stub
        return null;
    }

}

Thanks In Advance ! :)

Was it helpful?

Solution

See this part in the error message:

 NumberFormatException: Invalid int: "null"

you seem to try to parse the String "null" to an int. This is not possible and will therefore throw NumberFormatException.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top