2016-03-18 2 views
-1

Мне нужно реализовать встроенную функцию в приложении для Android.Реализовать собственную функцию Android APP и C

Функция:

public native int RFIDPower (String path, String data); 

public void RFIDPowerEnable(boolean isEnable){ 
String path = "/dev/RFID_enable"; 
if (isEnable)  
RFIDPower(path, “1”); 
else 
RFIDPower(path, “0”); 
} 

И это код C:

JNIEXPORT jint JNICALL Java_com_winmate_demo_main_RFIDPower (JNIEnv * env, jobject thiz, jstring path, jstring data) 
{ 
int fd = 0; 
const char *cPath, *cData; 
if (path == NULL) return -1; 
// Convert jstring to char pointer 
cPath = (*env)->GetStringUTFChars(env, path, NULL); 
cData = (*env)->GetStringUTFChars(env, data, NULL); 
// Open node “/dev/RFID_enable” 
fd = open(cPath, O_WRONLY | O_NOCTTY | O_NDELAY | O_NONBLOCK); 
if (fd < 0) { 
(*env)->ReleaseStringUTFChars(env, path, cPath); 
(*env)->ReleaseStringUTFChars(env, data, cData); 
return -1; 
} 
write(fd, cData, strlen(cData)); 
(*env)->ReleaseStringUTFChars(env, path, cPath); 
(*env)->ReleaseStringUTFChars(env, data, cData); 
close(fd); 
return 0; 
} 
+0

И в чем ваша проблема? Это рушится? Не рушится, но не работает? Что он должен делать? –

+0

Я понятия не имею, как реализовать код C в моем проекте android. – Andrea

+0

Но у вас уже есть код C. Так в чем проблема? – Michael

ответ

0

Попробуйте посмотреть на NDK samples. Пример hello-jni особенно полезен, когда вы новичок в NDK.

Появилась новая поддержка для разработки на C++ в Android Studio, но сейчас большая часть системы сборки является экспериментальной. Если вы заинтересованы в использовании экспериментальной поддержки, вместо этого вы должны обратиться к NDK samples here.

1

Вы должны создать свою общую библиотеку и скомпилировать этот файл c, а затем включить эту общую библиотеку в свое приложение. Вы будете нуждаться в http://developer.android.com/ndk/guides/application_mk.html

, а затем следовать этому примеру: http://developer.android.com/ndk/samples/sample_hellojni.html

и концу, вы должны загрузить свою родную библиотеку с помощью System.loadLibrary («yourlibraryname») в Java.

Смежные вопросы