头文件:ATemplate.h
#ifndef ATEMPLATE_H
#define ATEMPLATE_H
#include "common/gfx.h"
typedef struct
{
void ( *Init )( int width, int height );
void ( *Draw )( void );
void ( *ToucheBegan )( float x, float y, unsigned int tap_count );
void ( *ToucheMoved )( float x, float y, unsigned int tap_count );
void ( *ToucheEnded )( float x, float y, unsigned int tap_count );
void ( *Accelerometer )( float x, float y, float z );
} ATEMPLATE;
extern ATEMPLATE ATemplate;
void ATemplateInit(int width, int height);
void ATemplateDraw(void);
void ATemplateToucheBegan(float x, float y, unsigned int tap_count);
void ATemplateToucheMoved(float x, float y, unsigned int tap_count);
void ATemplateToucheEnded(float x, float y, unsigned int tap_count);
void ATemplateAccelerometer(float x, float y, float z);
void ATemplateToucheCancelled(float x, float y, unsigned int tap_count);
void ATemplateExit(void);
#ifndef _IPHONE_4_0
extern "C"{
JNIEXPORT void JNICALL Java_com_hl_atemplate_GL2JNILib_Init(JNIEnv* env,jobject obj,jint width,jint height,jstring apkFilePath);
JNIEXPORT void JNICALL Java_com_hl_atemplate_GL2JNILib_Draw(JNIEnv* env,jobject obj);
JNIEXPORT void JNICALL Java_com_hl_atemplate_GL2JNILib_ToucheBegan(JNIEnv *env, jobject obj, jfloat x, jfloat y, jint tap_count);
JNIEXPORT void JNICALL Java_com_hl_atemplate_GL2JNILib_ToucheMoved(JNIEnv *env, jobject obj, jfloat x, jfloat y, jint tap_count);
JNIEXPORT void JNICALL Java_com_hl_atemplate_GL2JNILib_ToucheEnded(JNIEnv *env, jobject obj, jfloat x, jfloat y, jint tap_count);
JNIEXPORT void JNICALL Java_com_hl_atemplate_GL2JNILib_Accelerometer(JNIEnv *env, jobject obj, jfloat x, jfloat y, jfloat z);
}
JNIEXPORT void JNICALL Java_com_hl_atemplate_GL2JNILib_Init(JNIEnv* env,jobject obj,jint width,jint height,jstring apkFilePath){
setenv("FILESYSTEM", env->GetStringUTFChars(apkFilePath, NULL), 1);
return ATemplate.Init(width,height);
}
JNIEXPORT void JNICALL Java_com_hl_atemplate_GL2JNILib_Draw(JNIEnv* env,jobject obj){
if(ATemplate.Draw)ATemplate.Draw();
}
JNIEXPORT void JNICALL Java_com_hl_atemplate_GL2JNILib_ToucheBegan(JNIEnv *env, jobject obj, jfloat x, jfloat y, jint tap_count) {
if(ATemplate.ToucheBegan)ATemplate.ToucheBegan(x,y,tap_count);
}
JNIEXPORT void JNICALL Java_com_hl_atemplate_GL2JNILib_ToucheMoved(JNIEnv *env, jobject obj, jfloat x, jfloat y, jint tap_count) {
if(ATemplate.ToucheMoved)ATemplate.ToucheMoved(x,y,tap_count);
}
JNIEXPORT void JNICALL Java_com_hl_atemplate_GL2JNILib_ToucheEnded(JNIEnv *env, jobject obj, jfloat x, jfloat y, jint tap_count) {
if(ATemplate.ToucheEnded)ATemplate.ToucheEnded(x,y,tap_count);
}
JNIEXPORT void JNICALL Java_com_hl_atemplate_GL2JNILib_Accelerometer(JNIEnv *env, jobject obj, jfloat x, jfloat y, jfloat z) {
if(ATemplate.Accelerometer)ATemplate.Accelerometer(x,y,z);
}
#endif
#endif
#include <jni.h>
#include "ATemplate.h"
ATEMPLATE ATemplate = { ATemplateInit, ATemplateDraw, ATemplateToucheBegan, ATemplateToucheMoved, ATemplateToucheEnded, ATemplateAccelerometer };
void ATemplateInit(int width, int height) {
//初始化
}
void ATemplateDraw(void) {
//画面内容
}
void ATemplateToucheBegan(float x, float y, unsigned int tap_count) {
//点击
}
void ATemplateToucheMoved(float x, float y, unsigned int tap_count) {
//滑动
}
void ATemplateToucheEnded(float x, float y, unsigned int tap_count) {
//点击结束
}
void ATemplateAccelerometer(float x, float y, float z) {
//重力传感器
}
void ATemplateExit(void) {
//退出要释放的
}