package com.com.callmethodjni;
import android.os.Handler;
public class JNISignal {
 static { System.loadLibrary("my_lib"); }
 
 private static Handler mHandler;
 private final static int SIGNAL1 = 1010;
 private final static int SIGNAL2 = 1011;
 public void setHandler(Handler handler) {
  JNISignal.mHandler = handler;
 }
 public native void register_signal();
 public static void getSignal1() {
  mHandler.sendEmptyMessage(SIGNAL1);
 }
 public static void getSignal2() {
  mHandler.sendEmptyMessage(SIGNAL2);
 }
}

JNI를 통해서 안드로이드에서 C로 코딩시킨 Signal을 등록하고(register_signal())

커널에서 해당 Signal1 or Signal2 가 발생할 경우에

JNISignal class의 getSignal1 or getSignal2 메서드를 호출하려고 합니다.

 

 

 $ javac JNISignal.java
JNISignal.java:3: error: package android.os does not exist
import android.os.Handler;
                            ^
JNISignal.java:10: error: cannot find symbol
        private static Handler mHandler;
                              ^
  symbol:   class Handler
  location: class JNISignal
JNISignal.java:14: error: cannot find symbol
        public void setHandler(Handler handler) {
                                              ^
  symbol:   class Handler
  location: class JNISignal
3 errors


cygwin에서 javac JNISignal.java를 수행하게 될 경우에 위와 같이.

android관련된 부분이 애러로 처리 되는데 어떻게 해결해야 할지 모르겠습니다.

javac -classpath ~~~~/android.jar JNISignal.java 이런 방식으로 해봤는데 안되어서

혹시 도움 받을 수 있을까해서 질문글을 남깁니다.