package com.android.fingerprintcallbackdemo;
import android.app.Activity;
import android.annotation.SuppressLint;
import android.content.ComponentName;
import android.content.Intent;
import android.content.ServiceConnection;
import android.os.Bundle;
import android.os.Handler;
import android.os.IBinder;
import android.os.Message;
import android.os.PowerManager;
import android.os.RemoteException;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;
import com.android.internal.policy.IKeyguardService;
import ma.release.Fingerprint;
import ma.release.Jnifp;
public class MainActivity extends Activity {
String TAG = "fenghaitao";
Button mButton;
Button mMatch;
Button mRemove;
EditText mEditText;
ProgressBar mBar;
String path;
Fingerprint mFingerprint;
int[] dat = {
0, 0, 0, 0, 0
};
TextView tv;
PowerManager pm;
IKeyguardService mService = null;
private ServiceConnection mConnection = new ServiceConnection() {
@Override
public void onServiceDisconnected(ComponentName name) {
// TODO Auto-generated method stub
mService = null;
}
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
// TODO Auto-generated method stub
mService = IKeyguardService.Stub.asInterface(service);
Log.i("fenghaitao", "======onServiceConected==="+mService);
}
};
Handler mHandler = new Handler() {
public void handleMessage(android.os.Message msg) {
Log.i("fenghaitao", "====handleMessage=====");
switch (msg.what) {
case 1:
Jnifp.enumerate(dat, 5);
StringBuffer sb = getIds();
tv.setText(sb);
mBar.setProgress(0);
break;
case 2:
mBar.setProgress(msg.arg1);
break;
case 3:
/* try {
mService.keyguardDone(true, true);
} catch (RemoteException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}*/
Toast.makeText(getApplicationContext(), "匹配成功:指纹 " + msg.arg1,
Toast.LENGTH_SHORT).show();
break;
case 4:
Jnifp.stopAuthenticate();
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
break;
case 5:
Toast.makeText(getApplicationContext(), "匹配失败!!", Toast.LENGTH_SHORT).show();
default:
break;
}
};
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mFingerprint = Fingerprint.getInstance();
mButton = (Button) findViewById(R.id.enroll);
mMatch = (Button) findViewById(R.id.match);
mRemove = (Button) findViewById(R.id.remove);
mEditText = (EditText) findViewById(R.id.et_remove);
mBar = (ProgressBar) findViewById(R.id.progressbar);
path = getApplicationContext().getFilesDir().toString();
tv = (TextView) findViewById(R.id.textView1);
mBar.setMax(100);
//new Jnifp().setNotify();
Jnifp.open(path);
Log.i(TAG, "===========Activity====path=" + path);
mButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Log.i(TAG, "=============Activity enroll click====");
/*
* Jnifp.stopAuthenticate(); Jnifp.setKeyMode(1);
*/
Jnifp.enroll();
// Jnifp.stopAuthenticate();
}
});
mMatch.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Log.i(TAG, "=============Activity match click====");
new Thread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
Jnifp.authenticate();
}
}).start();
}
});
mRemove.setOnClickListener(new OnClickListener() {
@SuppressLint("NewApi")
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Log.i(TAG, "=============Activity remove click====");
Log.i(TAG, "======Activity=====remove start======");
if(mEditText.getText().toString().isEmpty()){
Toast.makeText(getApplicationContext(), "请先输入ID,再按remove", Toast.LENGTH_SHORT).show();
return;
}
int finger = Integer.valueOf(mEditText.getText().toString());
Jnifp.remove(finger);
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Jnifp.enumerate(dat, 5);
StringBuffer sb = getIds();
tv.setText(sb);
mEditText.setText("");
mEditText.setHint("请输入指纹ID,然后按remove键");
Log.i(TAG, "======Activity=====remove end======");
}
});
mFingerprint.setOnEnrollListen(mEnrollCallback);
mFingerprint.setOnAuthenticateListen(mAuthenticateCallback);
Jnifp.enumerate(dat, 5);
StringBuffer sb = getIds();
tv.setText(sb);
mybindService();
Intent intent = new Intent();
intent.setClassName("com.android.fingerprintcallbackdemo",
"com.android.fingerprintcallbackdemo.FingerprintService");
startService(intent);
}
public void mybindService(){
Intent intent = new Intent();
intent.setComponent(new ComponentName("com.android.systemui", "com.android.systemui.keyguard.KeyguardService"));
bindService(intent, mConnection, BIND_AUTO_CREATE);
}
private StringBuffer getIds() {
int count = 0;
int[] temp = new int[5];
for (int i = 0; i < 5; i++) {
Log.i(TAG, "===data=" + dat[i]);
if (dat[i] > 0) {
temp[count] = i + 1;
count++;
Log.i(TAG, "===data===count=" + count);
}
}
StringBuffer sb = new StringBuffer();
int[] fingers = new int[count];
for (int j = 0; j < count; j++) {
fingers[j] = temp[j];
Log.i(TAG, "===temp ===" + temp[j]);
sb.append("指纹 ");
sb.append(temp[j] + "");
sb.append(" ");
}
return sb;
}
@Override
protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
Jnifp.stopAuthenticate();
finish();
}
Fingerprint.IAuthenticateCallback mAuthenticateCallback = new Fingerprint.IAuthenticateCallback() {
public void onCaptureFailed(int reason) {
Log.i(TAG, "======Activity===onCaptureFailed=======");
try {
Thread.sleep(50);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Message message = new Message();
message.what = 4;
mHandler.sendMessage(message);
};
public void onFingerRemoved() {
Log.i(TAG, "====Activity====onFingerRemoved== Authenticate=======");
};
public void onIdentified(int fid) {
Log.i(TAG, "=====Activity====onIdentified======" + fid);
// mHandler.sendEmptyMessage(0);
Message message = new Message();
message.arg1 = fid;
message.what = 3;
mHandler.sendMessage(message);
};
public void onNoMatch() {
Log.i(TAG, "====Activity===onNoMatch========");
Message message = new Message();
message.what = 5;
mHandler.sendMessage(message);
};
};
Fingerprint.IEnrollCallback mEnrollCallback = new Fingerprint.IEnrollCallback() {
public void onCaptureCompleted() {
Log.i(TAG, "=====Activity====onCaptureCompleted=========");
};
public void onCaptureFailed(int code) {
switch (code) {
case Fingerprint.FP_CHK_PART:
Log.i(TAG, "=====Activity======onCaptureFailed===触摸面积小==");
break;
case Fingerprint.FP_DUPLI_AREA:
Log.i(TAG, "=====Activity======onCaptureFailed===重复区域==");
break;
case Fingerprint.FP_DUPLI_FINGER:
Log.i(TAG, "=====Activity======onCaptureFailed====重复手指=");
break;
default:
break;
}
};
public void onEnrolled(int fid) {
Log.i(TAG, "======Activity======onEnrolled===fid=" + fid);
Message message = new Message();
message.arg1 = fid;
message.what = 1;
mHandler.sendMessage(message);
};
public void onEnrollmentFailed() {
Log.i(TAG, "======Activity======onEnrollmentFailed===");
};
public void onFingerRemoved() {
Log.i(TAG, "======Activity======onFingerRemoved== Enroll=");
};
public void onProgress(int num) {
Log.i(TAG, "======Activity========onProgress==num=" + num);
Message message = new Message();
message.arg1 = num;
message.what = 2;
mHandler.sendMessage(message);
};
};
}