iammert / InteractivePlayerView

Custom android music player view.
743 stars 161 forks source link

App crashing "UncaughtException: java.lang.ArithmeticException: divide by zero" #9

Open rubinnellikunnathu opened 7 years ago

rubinnellikunnathu commented 7 years ago

Bro, My app is crashing whenever i open the activity contains InteractivePlayerView.

My logcat shows.

malankaraapp E/UncaughtException: java.lang.ArithmeticException: divide by zero
                                                                                        at co.mobiwise.library.InteractivePlayerView.calculatePastProgress(InteractivePlayerView.java:769)
                                                                                        at co.mobiwise.library.InteractivePlayerView.onDraw(InteractivePlayerView.java:517)
                                                                                        at android.view.View.draw(View.java:15246)
                                                                                        at android.view.View.updateDisplayListIfDirty(View.java:14182)
                                                                                        at android.view.View.getDisplayList(View.java:14204)
                                                                                        at android.view.View.draw(View.java:14974)
                                                                                        at android.view.ViewGroup.drawChild(ViewGroup.java:3453)
                                                                                        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3240)
                                                                                        at android.view.View.updateDisplayListIfDirty(View.java:14177)
                                                                                        at android.view.View.getDisplayList(View.java:14204)
                                                                                        at android.view.View.draw(View.java:14974)
                                                                                        at android.view.ViewGroup.drawChild(ViewGroup.java:3453)
                                                                                        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3240)
                                                                                        at android.view.View.updateDisplayListIfDirty(View.java:14177)
                                                                                        at android.view.View.getDisplayList(View.java:14204)
                                                                                        at android.view.View.draw(View.java:14974)
                                                                                        at android.view.ViewGroup.drawChild(ViewGroup.java:3453)
                                                                                        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3240)
                                                                                        at android.view.View.updateDisplayListIfDirty(View.java:14177)
                                                                                        at android.view.View.getDisplayList(View.java:14204)
                                                                                        at android.view.View.draw(View.java:14974)
                                                                                        at android.view.ViewGroup.drawChild(ViewGroup.java:3453)
                                                                                        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3240)
                                                                                        at android.view.View.updateDisplayListIfDirty(View.java:14177)
                                                                                        at android.view.View.getDisplayList(View.java:14204)
                                                                                        at android.view.View.draw(View.java:14974)
                                                                                        at android.view.ViewGroup.drawChild(ViewGroup.java:3453)
                                                                                        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3240)
                                                                                        at android.view.View.updateDisplayListIfDirty(View.java:14177)
                                                                                        at android.view.View.getDisplayList(View.java:14204)
                                                                                        at android.view.View.draw(View.java:14974)
                                                                                        at android.view.ViewGroup.drawChild(ViewGroup.java:3453)
                                                                                        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3240)
                                                                                        at android.view.View.updateDisplayListIfDirty(View.java:14177)
                                                                                        at android.view.View.getDisplayList(View.java:14204)
                                                                                        at android.view.View.draw(View.java:14974)
                                                                                        at android.view.ViewGroup.drawChild(ViewGroup.java:3453)
                                                                                        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3240)
                                                                                        at android.view.View.draw(View.java:15249)
                                                                                        at android.widget.FrameLayout.draw(FrameLayout.java:598)
                                                                                        at com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java:2667)
                                                                                        at android.view.View.updateDisplayListIfDirty(View.java:14182)
                                                                                        at android.view.View.getDisplayList(View.java:14204)
                                                                                        at android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:273)
                                                                                        at android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:279)
                                                                                        at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:318)
                                                                                        at android.view.ViewRootImpl.draw(ViewRootImpl.java:2531)
                                                                                        at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:2353)
                                                                                        at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1983)
                                                                                        at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1061)
                                                                                        at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5896)
                                                                                        at android.view.Choreographer$CallbackRecord.run(Choreographer.java:767)
                                                                                        at android.view.Choreographer.doCallbacks(Choreographer.java:580)
                                                                                        at android.view.Choreographer.doFrame(Choreographer.java:550)
                                                                                        at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:753)
                                                                                        at android.os.Handler.handleCallback(Handler.java:739)
                                                                                        at android.os.Handler.dispatchMessage(Handler.java:95)
                                                                                        at android.os.Looper.loop(Looper.java:135)
                                                                                        at android.app.ActivityThread.main(ActivityThread.java:5351)
                                                                                        at java.lang.reflect.Method.invoke(Native Method)
                                                                                        at java.lang.reflect.Method.invoke(Method.java:372)
                                                                                        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:947)
                                                                                        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:742)
11-03 11:30:58.763 22112-22512/com.root5solutions.malankaraapp D/FA: Logging event (FE): _ae, Bundle[{_o=crash, _sc=Player, _si=-6119479215985674536, timestamp=1478152858750, fatal=1}]
11-03 11:30:58.973 22112-22112/com.root5solutions.malankaraapp D/FirebaseCrashApiImpl: throwable java.lang.ArithmeticException: divide by zero
11-03 11:30:59.073 22112-22710/com.root5solutions.malankaraapp D/FirebaseCrash: Saving crash
11-03 11:30:59.113 22112-22112/com.root5solutions.malankaraapp E/AndroidRuntime: FATAL EXCEPTION: main
                                                                                 Process: com.root5solutions.malankaraapp, PID: 22112
                                                                                 java.lang.ArithmeticException: divide by zero
                                                                                     at co.mobiwise.library.InteractivePlayerView.calculatePastProgress(InteractivePlayerView.java:769)
                                                                                     at co.mobiwise.library.InteractivePlayerView.onDraw(InteractivePlayerView.java:517)
                                                                                     at android.view.View.draw(View.java:15246)
                                                                                     at android.view.View.updateDisplayListIfDirty(View.java:14182)
                                                                                     at android.view.View.getDisplayList(View.java:14204)
                                                                                     at android.view.View.draw(View.java:14974)
                                                                                     at android.view.ViewGroup.drawChild(ViewGroup.java:3453)
                                                                                     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3240)
                                                                                     at android.view.View.updateDisplayListIfDirty(View.java:14177)
                                                                                     at android.view.View.getDisplayList(View.java:14204)
                                                                                     at android.view.View.draw(View.java:14974)
                                                                                     at android.view.ViewGroup.drawChild(ViewGroup.java:3453)
                                                                                     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3240)
                                                                                     at android.view.View.updateDisplayListIfDirty(View.java:14177)
                                                                                     at android.view.View.getDisplayList(View.java:14204)
                                                                                     at android.view.View.draw(View.java:14974)
                                                                                     at android.view.ViewGroup.drawChild(ViewGroup.java:3453)
                                                                                     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3240)
                                                                                     at android.view.View.updateDisplayListIfDirty(View.java:14177)
                                                                                     at android.view.View.getDisplayList(View.java:14204)
                                                                                     at android.view.View.draw(View.java:14974)
                                                                                     at android.view.ViewGroup.drawChild(ViewGroup.java:3453)
                                                                                     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3240)
                                                                                     at android.view.View.updateDisplayListIfDirty(View.java:14177)
                                                                                     at android.view.View.getDisplayList(View.java:14204)
                                                                                     at android.view.View.draw(View.java:14974)
                                                                                     at android.view.ViewGroup.drawChild(ViewGroup.java:3453)
                                                                                     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3240)
                                                                                     at android.view.View.updateDisplayListIfDirty(View.java:14177)
                                                                                     at android.view.View.getDisplayList(View.java:14204)
                                                                                     at android.view.View.draw(View.java:14974)
                                                                                     at android.view.ViewGroup.drawChild(ViewGroup.java:3453)
                                                                                     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3240)
                                                                                     at android.view.View.updateDisplayListIfDirty(View.java:14177)
                                                                                     at android.view.View.getDisplayList(View.java:14204)
                                                                                     at android.view.View.draw(View.java:14974)
                                                                                     at android.view.ViewGroup.drawChild(ViewGroup.java:3453)
                                                                                     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3240)
                                                                                     at android.view.View.draw(View.java:15249)
                                                                                     at android.widget.FrameLayout.draw(FrameLayout.java:598)
                                                                                     at com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java:2667)
                                                                                     at android.view.View.updateDisplayListIfDirty(View.java:14182)
                                                                                     at android.view.View.getDisplayList(View.java:14204)
                                                                                     at android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:273)
                                                                                     at android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:279)
                                                                                     at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:318)
                                                                                     at android.view.ViewRootImpl.draw(ViewRootImpl.java:2531)
                                                                                     at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:2353)
                                                                                     at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1983)
                                                                                     at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1061)
                                                                                     at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5896)
                                                                                     at android.view.Choreographer$CallbackRecord.run(Choreographer.java:767)
                                                                                     at android.view.Choreographer.doCallbacks(Choreographer.java:580)
                                                                                     at android.view.Choreographer.doFrame(Choreographer.java:550)
                                                                                     at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:753)
                                                                                     at android.os.Handler.handleCallback(Handler.java:739)
                                                                                     at android.os.Handler.dispatchMessage(Handler.java:95)
                                                                                     at android.os.Looper.loop(Looper.java:135)
                                                                                     at android.app.ActivityThread.main(ActivityThread.java:5351)
                                                                                     at java.lang.reflect.Method.invoke(Native Method)
                                                                                     at java.lang.reflect.Method.invoke(Method.java:372)
                                                                                     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:947)
                                                                                     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:742)

My code for music player is:

import android.media.AudioManager;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.ImageView;
import android.widget.Toast;

import java.io.IOException;

import co.mobiwise.library.InteractivePlayerView;
import co.mobiwise.library.OnActionClickedListener;

public class Player extends AppCompatActivity implements OnActionClickedListener {
    MediaPlayer mMediaPlayer;
    InteractivePlayerView ipv;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_player);
        Bundle b = new Bundle();
        b = getIntent().getExtras();
        final String url = b.getString("audio");
        Log.e("URL: ", url);
        ipv = (InteractivePlayerView) findViewById(R.id.ipv);
        mMediaPlayer = new MediaPlayer();
        mMediaPlayer.reset();
        mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);

        //mp3 will be started after completion of preparing...
        mMediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {

            @Override
            public void onPrepared(MediaPlayer player) {
                int max = mMediaPlayer.getDuration();
                Log.e("MAX", String.valueOf(max));
                player.start();
//                ipv.setMax(100);
//                ipv.setProgress(0);
                Log.e("start: ", url);
            }

        });

        ipv.setOnActionClickedListener(this);

        final ImageView control = (ImageView) findViewById(R.id.control);
        control.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(!ipv.isPlaying()){
                    ipv.start();
                    try {
                        Log.e("preparing: ", url);
                        mMediaPlayer.setDataSource(url);
                        mMediaPlayer.prepareAsync(); // might take long! (for buffering, etc)
                    } catch (IOException e) {
                        Toast.makeText(getApplicationContext(), "mp3 not found", Toast.LENGTH_SHORT).show();
                        e.printStackTrace();
                    }
                    control.setBackgroundResource(R.drawable.pause);
                }
                else{
                    ipv.stop();
                    control.setBackgroundResource(R.drawable.play);
                }
            }
        });

    }
    @Override
    public void onActionClicked(int id) {
        switch (id){
            case 1:
                //Called when 1. action is clicked.
                break;
            case 2:
                //Called when 2. action is clicked.
                break;
            case 3:
                //Called when 3. action is clicked.
                break;
            default:
                break;
        }
    }

    @Override
    public void onBackPressed() {
        mMediaPlayer.release();
        finish();
    }
}

Can you pls help me to figure it out.

If you provide a working code with mediaplayer basic controls like play ,pause and update seekbar , It will be a great help for those who like to work with your Player View.

sushant-jain commented 7 years ago

just use the setMax() function to set some initial non zero default value of the track