1.app部分编写代码流程
jni : java native interface
java代码调用jni的方式:
1, 加载jni的动态库
static{
System.loadLibrary("led_jni"); // /system/lib/libled_jni.so
}
2, 声明本地native方法
public native int openDev();
public native int devOn();
public native int devOff();
public native int closeDev();
3, 直接调用native方法
mynative.openDev();
示例代码如下:
LedActive.java
package com.example.ducks;
import com.hq.lowlevel.LedNative;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.widget.Button;
import android.widget.Toast;
import android.view.View;
import android.view.View.OnClickListener;
public class LedActivity extends Activity{
LedNative mynative;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_led);
initUI();
mynative = new LedNative();
mynative.openDev();
}
private void initUI() {
// TODO Auto-generated method stub
Button btn_on = (Button) findViewById(R.id.led1_off);
Button btn_off = (Button) findViewById(R.id.led1_on);
btn_on.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Log.i("LedActivity", "led on");
Toast.makeText(LedActivity.this, "狼来了,请闭眼", 3000).show();
mynative.devOn();
}
});
btn_off.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Log.i("LedActivity", "led off");
Toast.makeText(LedActivity.this, "天亮了,请睁眼", 3000).show();
mynative.devOff();
}
});
}
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
mynative.closeDev();
}
}
led图形界面activity代码如下:
package com.example.keeprun;
import com.hq.lowlevel.LedNative;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;
public class LedActivity extends Activity {
Button btn_on;
Button btn_off;
LedNative mynative;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_led);
initUI();
mynative = new LedNative();
//调用本地方法
mynative.openDev();
}
private void initUI() {
// TODO Auto-generated method stub
btn_on = (Button) findViewById(R.id.btn_on);
btn_off = (Button) findViewById(R.id.btn_off);
btn_on.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Log.i("LedActivity", "led on");
Toast.makeText(LedActivity.this, "灯亮了", 1000).show();
mynative.devOn();
}
});
btn_off.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Log.i("LedActivit