【发布时间】:2019-12-22 17:56:45
【问题描述】:
我正在尝试解决媒体播放器 seekTo() 方法的问题,该方法在前进/后退远程按钮按下事件中调用,但我收到此错误:
使用以下已编辑的 smali 尝试将 long 参数转换为 int:
.method private static synthetic a(JLandroid/media/MediaPlayer;)V
.locals 1
long-to-int v0, p1
.line 317
invoke-virtual {p2, v0}, Landroid/media/MediaPlayer;->seekTo(I)V
return-void
.end method
我该如何解决这个错误,或者有没有其他方法可以让它工作?
这是原始代码(但当我按下前进或倒退时,它只会停止/暂停视频):
long-to-int p1, p0
.line 317
invoke-virtual {p2, p1}, Landroid/media/MediaPlayer;->seekTo(I)V
我的临时修复是这样的:
.method private static synthetic a(JLandroid/media/MediaPlayer;)V
.locals 3
#get current position
invoke-virtual {p2}, Landroid/media/MediaPlayer;->getCurrentPosition()I
move-result v0
#add some ms to current position register
const/16 v1, 0x6978
add-int v2,v0,v1
add-int v2,v2,v1
add-int v2,v2,v1
add-int v2,v2,v1
add-int v2,v2,v1
#seek to calculated position
.line 317
invoke-virtual {p2, v2}, Landroid/media/MediaPlayer;->seekTo(I)V
return-void
.end method
但即使我按下后退,它也只会向前搜索(因为我只将时间添加到当前位置)。
我无法为 Rewind 事件找到/创建自定义方法,源非常大并且被混淆了。
跟随错误链和方法调用链并没有把我带到任何地方。
【问题讨论】:
标签: android reverse-engineering smali