package com.android.service; import android.R.bool; import android.R.integer; import android.annotation.SuppressLint; import android.app.Service; import android.content.Intent; import android.os.IBinder; import android.os.RemoteException; import android.util.Log; import com.android.activity.Util; import com.android.aidl.IAuthenticateCallback; import com.android.aidl.IEnrollCallback; import com.android.aidl.IFingerprintManager; import ma.release.Fingerprint; import ma.release.Jnifp; import android.os.PowerManager; import android.content.Context; import android.app.KeyguardManager; public class FingerprintManager extends Service { private String TAG = "fenghaitao"; IAuthenticateCallback mIAuthenticateCallback; IEnrollCallback mIEnrollCallback; Fingerprint mFinger; private boolean isAlreadyOpen= false; private int ret; @Override public IBinder onBind(Intent intent) { return mStub; } @Override public void onCreate() { // TODO Auto-generated method stub super.onCreate(); Log.i(TAG, "=====FingerprintManager onCreate==="); mFinger = Fingerprint.getInstance(); if(mFinger == null){ mFinger = Fingerprint.getInstance(); } if(mFinger != null && !isAlreadyOpen){ Log.d(TAG,"----------------FingerprintManager ---onAuthenticate Listen---"); mFinger.setOnAuthenticateListen(mAuthenticateCallback); mFinger.setOnEnrollListen(mEnrollCallback); new Jnifp().setNotify(); if(!isAlreadyOpen){ ret = Jnifp.open(getApplicationContext().getFilesDir().toString()); if(ret == 0){ isAlreadyOpen = true; } } } startKeyguardService(); } private void startKeyguardService() { Intent intent = new Intent(); intent.setClass(getApplicationContext(), KeyguardFingerprintService.class); startService(intent); } @Override public int onStartCommand(Intent intent, int flags, int startId) { // TODO Auto-generated method stub Log.i(TAG, "=====FingerprintManager startCommand==="); if(mFinger == null){ mFinger = Fingerprint.getInstance(); } if(mFinger != null){ Log.d(TAG, "-----------onStartCommand --- set onAuthenticate---"); mFinger.setOnAuthenticateListen(mAuthenticateCallback); mFinger.setOnEnrollListen(mEnrollCallback); } return super.onStartCommand(intent, flags, startId); } IFingerprintManager.Stub mStub = new IFingerprintManager.Stub() { @Override public int stopAuthenticate() throws RemoteException { // TODO Auto-generated method stub Jnifp.stopAuthenticate(); return 0; } @Override public void setOnEnrollListen(IEnrollCallback callback) throws RemoteException { // TODO Auto-generated method stub mIEnrollCallback = callback; } @Override public void setOnAuthenticateListen(IAuthenticateCallback callback) throws RemoteException { // TODO Auto-generated method stub mIAuthenticateCallback = callback; } @Override public int remove(int fid) throws RemoteException { Jnifp.remove(fid); return 0; } @Override public int enumerate(int[] dat, int N) throws RemoteException { // TODO Auto-generated method stub Jnifp.enumerate(dat, N); return 0; } @Override public int preEnroll() throws RemoteException { Log.i(TAG, "=============FingerprintManager preEnroll ======"); Jnifp.preEnroll(); return 0; } @Override public int enroll() throws RemoteException { // TODO Auto-generated method stub Log.i(TAG, "=====FingerprintManager enroll==="); Jnifp.enroll(); return 0; } @Override public int postEnroll() throws RemoteException { Log.i(TAG, "=============FingerprintManager postEnroll ======"); Jnifp.postEnroll(); return 0; } @Override public int authenticate() throws RemoteException { // TODO Auto-generated method stub Jnifp.authenticate(); return 0; } @Override public int resetVolt() throws RemoteException { return Jnifp.resetVolt(); } }; Fingerprint.IAuthenticateCallback mAuthenticateCallback = new Fingerprint.IAuthenticateCallback() { @Override public void onNoMatch() { super.onNoMatch(); try { mIAuthenticateCallback.onNoMatch(); } catch (RemoteException e) { e.printStackTrace(); } } @Override public void onIdentified(int fid) { super.onIdentified(fid); Log.i(TAG,"----------FingerprintManager onIdentified----"); try { mIAuthenticateCallback.onIdentified(fid); } catch (RemoteException e) { e.printStackTrace(); } } @Override public void onCaptureFailed(int reason) { super.onCaptureFailed(reason); try { mIAuthenticateCallback.onCaptureFailed(reason); } catch (RemoteException e) { e.printStackTrace(); } } @Override public void onFingerRemoved() { super.onFingerRemoved(); try { mIAuthenticateCallback.onFingerRemoved(); } catch (RemoteException e) { e.printStackTrace(); } } }; Fingerprint.IEnrollCallback mEnrollCallback = new Fingerprint.IEnrollCallback() { @Override public void onCaptureCompleted() { super.onCaptureCompleted(); try { mIEnrollCallback.onCaptureCompleted(); } catch (RemoteException e) { e.printStackTrace(); } } @Override public void onCaptureFailed(int code) { super.onCaptureFailed(code); try { mIEnrollCallback.onCaptureFailed(code); } catch (RemoteException e) { e.printStackTrace(); } } @Override public void onProgress(int num) { super.onProgress(num); try { mIEnrollCallback.onProgress(num); } catch (RemoteException e) { e.printStackTrace(); } } @Override public void onEnrolled(int fid) { super.onEnrolled(fid); try { mIEnrollCallback.onEnrolled(fid); } catch (RemoteException e) { e.printStackTrace(); } } @Override public void onEnrollmentFailed() { super.onEnrollmentFailed(); try { mIEnrollCallback.onEnrollmentFailed(); } catch (RemoteException e) { e.printStackTrace(); } } @Override public void onFingerRemoved() { super.onFingerRemoved(); try { mIEnrollCallback.onFingerRemoved(); } catch (RemoteException e) { e.printStackTrace(); } } }; }