我正在Android中创建一个视频播放器。在我的Android代码中,我有一个用于播放/暂停状态的切换按钮。如果plafFlag = 0,那么视频需要暂停(playFlag是java部分代码中的一个变量)。
在代码的原生方面,我试图在每次将一个帧显示到屏幕上之前访问该playFlag的值。
以下是我的java部分代码:
public class myPlayer extends Activity {
public int playFlag;
.
.
.
.
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.player);
final ToggleButton playFlagBtn=(ToggleButton) findViewById(R.id.toggleButton1);
playFlagBtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
if(playFlagBtn.isChecked()){
playFlag=0;
}
else{
playFlag=1;
}
}
});
从这个 OnCreate 函数本身,我调用了本机代码,我正在尝试访问 playFlag 变量。
以下是我正在访问 playFlag 变量的代码段:
jclass cls = (*env)->FindClass(env,"com/example/my_decoder/myPlayer"); __android_log_print(ANDROID_LOG_DEBUG,"MYAPP","reference to class obatined",NULL);
jfieldID fidInt=(*env)->GetFieldID(env,cls,"playFlag","I");
__android_log_print(ANDROID_LOG_DEBUG,"MYAPP","fid obtained",NULL);
int Flag=0;
__android_log_print(ANDROID_LOG_DEBUG,"MYAPP","Before fetching flag value",NULL);
playFlag=(*env)->GetIntField(env,jobj,fidInt);
__android_log_print(ANDROID_LOG_DEBUG,"MYAPP","Initial value of playflag=%d",playFlag);
上述本机代码段不会出错。获取该值,但它似乎是一些垃圾值。
在logcat中我输出如下:
03-08 11:21:32.627: D/MYAPP(31220): Initial value of playflag=1085053248
这里的主要目的是在获取标志的值为0时暂停解码过程,否则继续解码帧并在屏幕上呈现它。因此,对我而言,从代码的java部分获取标志的正确值非常重要。
任何人都可以解释我哪里出错了。或者,如果有其他方法可以做到这一点。
等待一些回复。提前谢谢。