android.media.MediaPlayer#getDuration ( )源码实例Demo

下面列出了android.media.MediaPlayer#getDuration ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: droid-vizu   文件: SoundPlayerView.java
public void setMediaPlayer(MediaPlayer player) {
  rippleVisualizerView.setMediaPlayer(player);
  int durationMilliseconds = player.getDuration();
  if (durationMilliseconds == -1) {
    durationMilliseconds = 0;
  }

  setSecondToFirstDecimalPoint(durationMilliseconds);
  rippleVisualizerView.setOnMediaPlayFinishCallbackk(new OnMediaPlayFinishCallback() {
    @Override
    public void finished() {
      currentMediaState = State.PAUSED;
      updateControlButton();
    }
  });
}
 
源代码2 项目: microbit   文件: AlertPlugin.java
public static int getDuration(MediaPlayer mediaPlayer, AssetFileDescriptor afd) {
    int duration = 500;

    try {
        mediaPlayer.reset();
        mediaPlayer.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength());
        afd.close();
        mediaPlayer.prepare();
        duration = mediaPlayer.getDuration();
    } catch(IOException e) {
        Log.e(TAG, e.toString());
    }

    mediaPlayer.reset();

    return duration;
}
 
源代码3 项目: microbit   文件: AlertPlugin.java
public static int getDuration(MediaPlayer mediaPlayer, Uri fileUri) {
    int duration = 500;

    try {
        mediaPlayer.reset();
        mediaPlayer.setDataSource(MBApp.getApp(), fileUri);
        mediaPlayer.prepare();
        duration = mediaPlayer.getDuration();
    } catch(IOException e) {
        Log.e(TAG, e.toString());
    }

    mediaPlayer.reset();

    return duration;
}
 
源代码4 项目: SMP   文件: MusicService.java
@Override
public void onPrepared(MediaPlayer mp) {
    // if a songPos has been stored
    if (savedSongPos > 0) {
        // seek to it
        if (savedSongPos < mp.getDuration())
            mp.seekTo(savedSongPos);
        // reset songPos
        params.setSongPos(0);
        savedSongPos = 0;
    }

    // start playback
    mp.start();
    state.setState(PlayerState.Started);

    scrobble.send(Scrobble.SCROBBLE_COMPLETE);
    scrobble.send(Scrobble.SCROBBLE_START);
}
 
源代码5 项目: SMP   文件: MusicService.java
@Override
public void onPrepared(MediaPlayer mp) {
    // if a songPos has been stored
    if (savedSongPos > 0) {
        // seek to it
        if (savedSongPos < mp.getDuration())
            mp.seekTo(savedSongPos);
        // reset songPos
        params.setSongPos(0);
        savedSongPos = 0;
    }

    // start playback
    mp.start();
    state.setState(PlayerState.Started);

    scrobble.send(Scrobble.SCROBBLE_COMPLETE);
    scrobble.send(Scrobble.SCROBBLE_START);
}
 
源代码6 项目: SimpleVideoEditor   文件: AudioTransCoder.java
private void prepare() throws IOException {
    extractor = new MediaExtractor();
    extractor.setDataSource(mInputFile.getAbsolutePath());
    int numTracks = extractor.getTrackCount();
    for (int i = 0; i < numTracks; i++) {
        MediaFormat format = extractor.getTrackFormat(i);
        String mine = format.getString(MediaFormat.KEY_MIME);
        if (!TextUtils.isEmpty(mine) && mine.startsWith("audio")) {
            extractor.selectTrack(i);
            if (mDurationMs == 0) {
                try {
                    mDurationMs = format.getLong(MediaFormat.KEY_DURATION) / 1000;
                } catch (Exception e) {
                    e.printStackTrace();
                    MediaPlayer mediaPlayer = new MediaPlayer();
                    mediaPlayer.setDataSource(mInputFile.getAbsolutePath());
                    mediaPlayer.prepare();
                    mDurationMs = mediaPlayer.getDuration();
                    mediaPlayer.release();
                }
            }

            if (mDurationMs == 0) {
                throw new IllegalStateException("We can not get duration info from input file: " + mInputFile);
            }

            decoder = MediaCodec.createDecoderByType(mine);
            decoder.configure(format, null, null, 0);
            decoder.start();
            break;
        }
    }
}
 
源代码7 项目: AlbumCameraRecorder   文件: MaskProgressLayout.java
@Override
public void addAudioUrl(String audioUrl) {
    MediaPlayer mediaPlayer = new MediaPlayer();
    try {
        mediaPlayer.setDataSource(audioUrl);
        mediaPlayer.prepare();
        int duration = mediaPlayer.getDuration();
        if (0 != duration) {
            MultiMediaView multiMediaView = new MultiMediaView(MultimediaTypes.AUDIO);
            multiMediaView.setUrl(audioUrl);
            multiMediaView.setViewHolder(this);

            if (this.audioList == null) {
                this.audioList = new ArrayList<>();
            }
            audioList.add(multiMediaView);

            // 显示音频播放控件,当点击播放的时候,才正式下载并且进行播放
            mViewHolder.playView.setVisibility(View.VISIBLE);
            isShowRemovceRecorder();
            RecordingItem recordingItem = new RecordingItem();
            recordingItem.setUrl(audioUrl);
            recordingItem.setLength(duration);
            mViewHolder.playView.setData(recordingItem, audioProgressColor);
            //记得释放资源
            mediaPlayer.release();
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
}
 
源代码8 项目: browser   文件: HelpUtils.java
public static int mediaDuration(Context context,String path){
    MediaPlayer mp = MediaPlayer.create(context, Uri.parse(path));
    if(mp==null){
        return 0;
    }
    int duration = mp.getDuration();
    mp.release();
    return duration;
}
 
源代码9 项目: Vidsta   文件: VidstaPlayer.java
@Override
public void onPrepared(MediaPlayer mediaPlayer) {
    isPrepared = true;
    videoDuration = mediaPlayer.getDuration();
    seekBarDuration.setProgress(0);
    seekBarDuration.setMax(videoDuration);
    tvPosition.setText(VidstaUtil.getTimeString(0, false));
    tvDuration.setText(VidstaUtil.getTimeString(videoDuration, true));
    proViewVideoLoading.stop();
    proViewVideoLoading.setVisibility(INVISIBLE);
    removeView(videoLoadingView);
    videoPlayer.setOnVideoSizeChangedListener(this);

    if (initialVideoWidth == null && initialVideoHeight == null) {
        initialVideoWidth = videoPlayer.getVideoWidth();
        initialVideoHeight = videoPlayer.getVideoHeight();
    }

    if (autoPlay) {
        start();
    } else {
        controlPlayPause.setVisibility(VISIBLE);
        controlSeekBar.setVisibility(VISIBLE);
        start();
        pause();
    }
}
 
源代码10 项目: MNVideoPlayer   文件: MNViderPlayer.java
@Override
    public void onBufferingUpdate(MediaPlayer mp, int percent) {
//        Log.i(TAG, "二级缓存onBufferingUpdate: " + percent);
        if (percent >= 0 && percent <= 100) {
            int secondProgress = mp.getDuration() * percent / 100;
            mn_seekBar.setSecondaryProgress(secondProgress);
        }
    }
 
源代码11 项目: LLApp   文件: VideoPlayerContainer.java
@Override
public void onPrepared(MediaPlayer mp) {
	//准备播放,显示该控件
	setVisibility(View.VISIBLE);
	int duration=mp.getDuration();
	//设置最大事件,单位秒
	mDurationView.setText(mTimeFormat.format(new Date(duration)));
	mProgressBar.setMax((int) Math.floor(duration/1000));
	mp.start();
	mHandler.removeCallbacks(null, null);
	mHandler.post(playerRunnable);
}
 
源代码12 项目: Cirrus_depricated   文件: MediaServiceBinder.java
@Override
public int getDuration() {
    MediaPlayer currentPlayer = mService.getPlayer();
    if (currentPlayer != null) {
        return currentPlayer.getDuration();
    } else {
        return 0;
    }
}
 
源代码13 项目: GSYRecordWave   文件: AudioPlayer.java
/**
 * 获取当前播放时长
 *
 * @return 本地播放时长
 */
public static long getDurationLocation(Context context, String path) {
    MediaPlayer player = MediaPlayer.create(context, Uri.fromFile(new File(path)));
    if (player != null)
        return player.getDuration();
    else
        return 0;
}
 
private int calculatePercentViewed(final MediaPlayer mp)
{
    final float videoDuration = mp.getDuration();
    final float currentPosition = mp.getCurrentPosition();
    // NOTE: Media player bug: calling getCurrentPosition after the video finished playing gives slightly larger value than the total duration of the video.
    if ( currentPosition >= videoDuration )
    {
        // Video fully watched, return 100%.
        return 100;
    }

    final double percentViewed = ( currentPosition / videoDuration ) * 100f;
    return (int) Math.ceil( percentViewed );
}
 
源代码15 项目: KJFrameForAndroid   文件: RecordButtonUtil.java
public void startPlay(String audioPath, TextView timeView) {
    if (!mIsPlaying) {
        if (!StringUtils.isEmpty(audioPath)) {
            mPlayer = new MediaPlayer();
            try {
                mPlayer.setDataSource(audioPath);
                mPlayer.prepare();
                if (timeView != null) {
                    int len = (mPlayer.getDuration() + 500) / 1000;
                    timeView.setText(len + "s");
                }
                mPlayer.start();
                if (listener != null) {
                    listener.starPlay();
                }
                mIsPlaying = true;
                mPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
                    @Override
                    public void onCompletion(MediaPlayer mp) {
                        stopPlay();
                    }
                });
            } catch (Exception e) {
                e.printStackTrace();
            }
        } else {
            ViewInject.toast(KJActivityStack.create().topActivity()
                    .getString(R.string.record_sound_notfound));
        }
    } else {
        stopPlay();
    } // end playing
}
 
源代码16 项目: jmessage-android-uikit   文件: RecordVoiceButton.java
private void finishRecord() {
    cancelTimer();
    stopRecording();
    if (recordIndicator != null) {
        recordIndicator.dismiss();
    }

    long intervalTime = System.currentTimeMillis() - startTime;
    if (intervalTime < MIN_INTERVAL_TIME) {
        Toast.makeText(getContext(), mContext.getString(IdHelper.getString(mContext, "jmui_time_too_short_toast")), Toast.LENGTH_SHORT).show();
        myRecAudioFile.delete();
    } else {
        if (myRecAudioFile != null && myRecAudioFile.exists()) {
            MediaPlayer mp = new MediaPlayer();
            try {
                FileInputStream fis = new FileInputStream(myRecAudioFile);
                mp.setDataSource(fis.getFD());
                mp.prepare();
            } catch (IOException e) {
                e.printStackTrace();
            }
            //某些手机会限制录音,如果用户拒接使用录音,则需判断mp是否存在
            if (mp != null) {
                int duration = mp.getDuration() / 1000;//即为时长 是s
                if (duration < 1) {
                    duration = 1;
                } else if (duration > 60) {
                    duration = 60;
                }
                mListener.onRecordFinished(duration, myRecAudioFile.getAbsolutePath());
            } else {
                Toast.makeText(mContext, mContext.getString(IdHelper.getString(mContext,
                                "jmui_record_voice_permission_request")), Toast.LENGTH_SHORT).show();
            }
        }
    }
}
 
public String refreshAudioDuration(String filePath) {
    MediaPlayer mediaPlayer = new MediaPlayer();
    try {
        mediaPlayer.setDataSource(filePath);
        mediaPlayer.prepare();
        int duration = mediaPlayer.getDuration();
        duration = duration / 1000;
        minute = duration / 60;
        second = (duration % 60) + 1;
        mediaPlayer.release();
    } catch (Exception e) {
        e.printStackTrace();
    }
    return String.format("%02d:%02d", minute, second);
}
 
源代码18 项目: CameraV   文件: VideoSeekBar.java
public RangeSeekBar<Integer> init(MediaPlayer mp) {
	this.mp = mp;
	
	setMax(mp.getDuration());
	post(progressRunnable);
	setOnSeekBarChangeListener(this);
	
	endpointBar = new RangeSeekBar<Integer>(0, mp.getDuration(), context);		
	return endpointBar;
	
}
 
源代码19 项目: FlyWoo   文件: ChatAdapter.java
private int getVoiceLength(View view, String path) {
    MediaPlayer mp = MediaPlayer.create(view.getContext(), Uri.parse("file://" + path));
    int duration = mp.getDuration() / 1000;
    mp.release();
    return duration;
}
 
源代码20 项目: MultiImagePicker   文件: PickerActivity.java
public void onEvent(final Events.OnPickImageEvent pickImageEvent) {
    if (mPickOptions.videosEnabled && mPickOptions.videoLengthLimit > 0 && pickImageEvent.imageEntry.isVideo) {
        // Check to see if the selected video is too long in length
        final MediaPlayer mp = MediaPlayer.create(this, Uri.parse(pickImageEvent.imageEntry.path));
        final int duration = mp.getDuration();
        mp.release();
        if (duration > (mPickOptions.videoLengthLimit)) {
            Toast.makeText(this, getResources().getString(R.string.video_too_long).replace("$", String.valueOf(mPickOptions.videoLengthLimit / 1000)), Toast.LENGTH_SHORT).show();
            return; // Don't allow selection
        }
    }

    if (mPickOptions.pickMode == Picker.PickMode.MULTIPLE_IMAGES) {
        handleMultipleModeAddition(pickImageEvent.imageEntry);


    } else if (mPickOptions.pickMode == Picker.PickMode.SINGLE_IMAGE) {
        //Single image pick mode


        final ImagesPagerFragment pagerFragment;

        if (getSupportFragmentManager().findFragmentByTag(ImagesPagerFragment.TAG) != null) {

            pagerFragment = (ImagesPagerFragment) getSupportFragmentManager().findFragmentByTag(ImagesPagerFragment.TAG);
        } else {
            pagerFragment = new ImagesPagerFragment();
        }


        getSupportFragmentManager().beginTransaction()
                .replace(R.id.fragment_container, pagerFragment, ImagesPagerFragment.TAG)
                .addToBackStack(ImagesPagerFragment.TAG)
                .commit();


    }


    updateFab();

}