status_t AmlogicPlayer::seekTo(int position) { if (position < 0) { /*cancel seek*/ return NO_ERROR; } if((position/1000 == mPlayTime/1000)||((position/1000 == (mPlayTime+500)/1000)&&(licenseOfApk==2))){ sendEvent(MEDIA_SEEK_START); sendEvent(MEDIA_SEEK_COMPLETE); return NO_ERROR; }
时间: 2024-03-04 11:50:40 浏览: 63
这是 AmlogicPlayer 类的 seekTo 方法的一部分,用于在 Android 平台上实现 MediaPlayer 的 seekTo 方法。该方法接受一个整数参数 position,表示要跳转到的媒体时间点(单位为毫秒)。如果 position 小于 0,则取消跳转并返回 NO_ERROR。如果跳转的时间点与当前时间点相同或者与当前时间点相差不到 500 毫秒,并且许可证为 2,则发送 MEDIA_SEEK_START 和 MEDIA_SEEK_COMPLETE 事件,并返回 NO_ERROR。
相关问题
status_t AmlogicPlayer::seekTo(int position) { if (position < 0) { /cancel seek/ return NO_ERROR; } if((position/1000 == mPlayTime/1000)||((position/1000 == (mPlayTime+500)/1000)&&(licenseOfApk==2))){ sendEvent(MEDIA_SEEK_START); sendEvent(MEDIA_SEEK_COMPLETE); return NO_ERROR; } 中的seek_start事件在哪被接受
在这段代码中,sendEvent(MEDIA_SEEK_START) 和 sendEvent(MEDIA_SEEK_COMPLETE) 方法并不会被直接接收。相反,这些方法会发送一个事件给 MediaPlayer 对象,该对象会在接收到这些事件时执行相应的操作。具体来说,sendEvent 方法会将事件添加到事件队列中,MediaPlayer 在执行事件队列时会处理这些事件。在 MediaPlayer 中,当调用 seekTo 方法时,会发送 MEDIA_SEEK_START 事件,在跳转完成后会发送 MEDIA_SEEK_COMPLETE 事件。这些事件会被 MediaPlayer 对象接收并处理。
android_media_MediaPlayer_seekTo(JNIEnv *env, jobject thiz, int msec) { sp<MediaPlayer> mp = getMediaPlayer(env, thiz); if (mp == NULL ) { jniThrowException(env, "java/lang/IllegalStateException", NULL); return; } ALOGV("seekTo: %d(msec)", msec); current_time_log=0; env->CallVoidMethod(thiz,fields.print_log,PRINT_LOG_SEEKTO ,msec); process_media_player_call( env, thiz, mp->seekTo(msec), NULL, NULL ); }
这是一段 C++ 代码,用于在 Android 平台上实现 MediaPlayer 的 seekTo 方法。该方法接受一个整数参数 msec,表示要跳转到的媒体时间点(单位为毫秒)。首先,它通过 getMediaPlayer 函数获取 MediaPlayer 对象的引用。如果获取失败,则抛出 IllegalStateException 异常。然后,它记录当前时间并调用 print_log 方法打印日志。最后,它通过 process_media_player_call 函数调用 MediaPlayer 的 seekTo 方法进行跳转。如果跳转成功,则不返回任何值,否则抛出异常。