幀動(dòng)畫,是按順序播放一組圖像。幀動(dòng)畫有兩個(gè)比較重要的屬性需要注意,一個(gè)是android:oneshot屬性,用于設(shè)置播放模式,是單次播放還是循環(huán)播放;一個(gè)是android:duration屬性,用于設(shè)置每幀的持續(xù)時(shí)間,單位為毫秒。幀動(dòng)畫的資源文件位于res/anim文件夾下。
1、Android的硬件抽象層讀取相應(yīng)的串口設(shè)備的數(shù)據(jù):
static int uart_read_drv(struct uart_control_device_t *dev, char *buf, int count)
{
int count1 = 0;
count1 = read(fd, buf, count);
if(count1 < 0)
{
perror("read");
}
return 0;
}
2、 Android的JNI層經(jīng)過回調(diào)之后,可以通過自定義的相應(yīng)的結(jié)構(gòu)體方法讀取到硬件抽象層的數(shù)據(jù),并反饋到上層:
static jchar uart_read(JNIEnv* env, jobject thiz) {
char s_buf[100]={0};
if (sUartDevice) {
sUartDevice->uart_read_hal(sUartDevice, s_buf, 1);
}else{
LOGI("sUartDevice is null");
}
if (s_buf == 0)
LOGI("JNI: Lost info");
else
{
LOGI("***********JNI:info length is : %d", strlen(s_buf));
}
return s_buf[0];
}
3、Android的JNI和上層函數(shù)的對(duì)應(yīng)描述:
static const JNINativeMethod gMethods[] = {
….
{ "_uart_data_update",
"()C",
(void*)uart_read },
….
};
4、Android的Framework層定義相應(yīng)的本地接口方法:
private static native char _uart_data_update();
通過類的方法進(jìn)行封裝:
public class Uart {
static {
System.loadLibrary("uart_runtime");
Log.i("**********************Java Service", "loadLibrary sucess");
}
public Uart(){
_init();
}
public char GpsDataUpdate() {
char s = _uart_data_update();
return s;
}
private static native boolean _init();
private static native char _uart_data_update();
}
}
5、.Java上層App進(jìn)行調(diào)用,并獲得數(shù)據(jù):
static Uart uartuart = new Uart();
char s = uartuart.GpsDataUpdate();