Valor Wave F7020安卓设备

时间:2015-08-13 08:18:47

标签: java android biometrics

大家好,有没有人曾与Valor Wave F7020合作过?我希望能够使用该设备的指纹功能,但大部分内容都是中文的。我有他们的示例代码,但我不知道如何使它工作。 当我按下我按下的任何内容时,我会得到一个中文回复,字幕也是中文

package com.hdsoft.fingerprint;

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;

import com.pwv.gpctrl.fctrl;

import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.util.Log;
//import android.util.Log;
//import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

public class LibFpDemo extends Activity {
    private static final int MSG_CMD    = 0;
    private static final int MSG_EXIT   = 1;
    private static final int MSG_INFO   = 2;
    private static final int MSG_FIND   = 3;
    private static final int MSG_CANCEL = 4;


    private boolean bContinue = true;   
    private fctrl gpctrl = new fctrl();
    private Button btOpen, btImage, btEnrol, btMatch, btEmpty, btCancel;
    private TextView tvInfo;
    private static final String TAG = "finger";
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState); 

        setContentView(R.layout.activity_main);        

        gpctrl.SetValue(32, 1);
        gpctrl.GetValue(32);
        tvInfo   = (TextView)findViewById(R.id.tvInfo); 
     //   btOpen   = (Button)findViewById(R.id.btOpen);
        btImage  = (Button)findViewById(R.id.btImage);
        btEnrol  = (Button)findViewById(R.id.btEnrol);
        btMatch  = (Button)findViewById(R.id.btMatch);
        btEmpty  = (Button)findViewById(R.id.btEmpty);
        btCancel = (Button)findViewById(R.id.btCancel);





        final ImageView iv = (ImageView)findViewById(R.id.imageView1);


        final Handler handler = new Handler() {   
            public void handleMessage(Message msg) { 
                switch (msg.what) {   
                case MSG_CMD:
                    tvInfo.setText(LibFp.GetError(msg.arg1));
                    if (msg.arg1 == LibFp.FP_OK) {
                        optFinish();
                    }
                    else if (msg.arg1 == LibFp.FP_ERROR_DRIVE) {
                        closeDrive();
                    }
                    break;
                case MSG_EXIT:
                    tvInfo.setText(LibFp.GetError(msg.arg1));
                    if (msg.arg1 == LibFp.FP_ERROR_DRIVE) {
                        closeDrive();
                    }
                    else {
                        optFinish();
                    }
                    break;
                case MSG_INFO:
                    switch (msg.arg1) {
                    case 0:
                        tvInfo.setText("¼ÈëÖ¸ÎÆ, Çë°´ÊÖÖ¸...");
                        break;
                    case 1:
                        tvInfo.setText("ÇëÒÆ¿ªÊÖÖ¸...");
                        break;
                    case 2:
                        tvInfo.setText("Ö¸ÎƳɹ¦Èë¿â, µØÖ·±àºÅ = " + msg.arg2 + ", Çë°´ÊÖÖ¸¼ÌÐø¼Èë...");
                        break;
                    default:
                        break;
                    }
                    break;
                case MSG_FIND:
                    optFinish();
                    tvInfo.setText("Ö¸ÎÆÆ¥Åä³É¹¦, ´æ·ÅµØÖ· = " + msg.arg1 + "±È¶ÔµÃ·Ö  = " + msg.arg2);
                    break;
                case MSG_CANCEL:
                    bContinue = true;
                    optFinish();
                    switch (msg.arg1) {
                    case 0:
                        tvInfo.setText("²Ù×÷ÒÑÈ¡Ïû...");
                        break;
                    default:
                        break;
                    }
                    break;
                default: 
                    break;   
                }   
                super.handleMessage(msg);   
            }
        };

        openDrive();

//        btOpen.setOnClickListener(new View.OnClickListener() 
//      {
//          @Override
//          public void onClick(View v) 
//          {               
//              int nRet = LibFp.FpOpenEx((short)0x2109, (short)0x7638);
//              Toast.makeText(LibFpDemo.this,nRet+"111", Toast.LENGTH_SHORT).show();
//              if (nRet == LibFp.FP_ERROR_OPEN) {
//                  LibFp.GetRootRight();
//                  Toast.makeText(LibFpDemo.this,nRet+"22222222", Toast.LENGTH_SHORT).show();
//                  nRet = LibFp.FpOpenEx((short)0x2109, (short)0x7638);        
//                  Toast.makeText(LibFpDemo.this,nRet+"444444444444444444", Toast.LENGTH_SHORT).show();
//              }
//              Toast.makeText(LibFpDemo.this,nRet+"5555555555555555555555555555555", Toast.LENGTH_SHORT).show();
//              if (nRet == LibFp.FP_OK) {
//                  openDrive();
//              }
//              else {
//                  System.out.println(nRet+"444444444444444444");
//                  tvInfo.setText(LibFp.GetError(nRet));
//              }           
//          }
//      });
        btImage.setOnClickListener(new View.OnClickListener() 
        {
            @Override
            public void onClick(View v) 
            {

                open();     
                optStart();

                bContinue = true;
                new Thread(new Runnable() {
                    public void run() {
                        byte bmpData[] = new byte[256*288+1078];
                        int  bmpSize[] = new int[1];
                        while (bContinue) {                     
                            int nRet = LibFp.FpGetImage(0xffffffff, 10000);
                            if (nRet == LibFp.FP_OK) {
                                if ((nRet = LibFp.FpUpBMP(0xffffffff, bmpData, 256*288 + 1078, bmpSize, 10000)) == LibFp.FP_OK) {
                                    final Bitmap bm = BitmapFactory.decodeByteArray(bmpData, 0, 256*288 + 1078);
                                    iv.post(new Runnable() {
                                        public void run() {
                                            iv.setImageBitmap(bm);
                                        }
                                    });
                                }
                            }
                            else{
                                sendInfo(handler, MSG_CMD, 2);
                            }
//                          if (nRet == LibFp.FP_NO_FINGER) {
//                              try {
//                                  Thread.sleep(150);
//                              } catch (InterruptedException e) {
//                              }
//                          }
//                          else {
//                              return;
//                          }

                        }
                        sendInfo(handler, MSG_CANCEL, 0);

                    }}).start();
            }
        });
        btEnrol.setOnClickListener(new View.OnClickListener() 
        {
            @Override
            public void onClick(View v) 
            {
                 open();        
                optStart();
                bContinue = true;
                new Thread(new Runnable() {
                    public void run() {
                        byte nBufferId = 1;
                        byte bmpData[] = new byte[256*288+1078];
                        int  bmpSize[] = new int[1];
                        short nPageId[] = new short[1];
                        if (LibFp.FpValidTempleteNum(0xffffffff, nPageId, 10000) != LibFp.FP_OK) return;
                        sendInfo(handler, MSG_INFO, 0);
                        while (bContinue) {
                            int nRet = LibFp.FpGetImage(0xffffffff, 10000);
                            if (nRet == LibFp.FP_OK) {
                                if ((nRet = LibFp.FpGenChar(0xffffffff, nBufferId, 10000)) == LibFp.FP_OK) {                                    
                                    if ((nRet = LibFp.FpGetImage(0xffffffff, 10000)) == LibFp.FP_OK) {
                                        if ((nRet = LibFp.FpUpBMP(0xffffffff, bmpData, 256*288 + 1078, bmpSize, 10000)) == LibFp.FP_OK) {
                                            final Bitmap bm = BitmapFactory.decodeByteArray(bmpData, 0, 256*288 + 1078);
                                            iv.post(new Runnable() {
                                                public void run() {
                                                    iv.setImageBitmap(bm);
                                                }
                                            });                                     
                                            sendInfo(handler, MSG_INFO, 1);                                         
                                            while ((nRet = LibFp.FpGetImage(0xffffffff, 10000)) != LibFp.FP_NO_FINGER) {
                                                if (nRet != LibFp.FP_OK) {
                                                    sendInfo(handler, MSG_EXIT, nRet);
                                                    return;
                                                }
                                                if (!bContinue) {
                                                    sendInfo(handler, MSG_CANCEL, 0);
                                                    return;
                                                }
                                                try {
                                                    Thread.sleep(150);
                                                } catch (InterruptedException e) {
                                                }
                                            }
                                        }
                                    }
                                    if (nBufferId == 2) {
                                        if ((nRet = LibFp.FpRegModel(0xffffffff, 10000))== LibFp.FP_OK) {                                           
                                            if ((nRet = LibFp.FpStoreChar(0xffffffff, nBufferId, nPageId[0], 10000)) == LibFp.FP_OK) {
                                                sendInfo(handler, MSG_INFO, 2, nPageId[0]);
                                                nBufferId = 1;
                                                nPageId[0] += 1;
                                            }
                                        }
                                        if (nRet != LibFp.FP_OK) {      
                                            sendInfo(handler, MSG_EXIT, nRet);
                                            return;
                                        }                                       
                                    }
                                    else {
                                        nBufferId = 2;
                                        sendInfo(handler, MSG_INFO, 0);
                                    }                                   
                                }
                            }
                            if (nRet != LibFp.FP_OK && nRet != LibFp.FP_NO_FINGER) {
                                sendInfo(handler, MSG_EXIT, nRet);
                                return;
                            }
                        }
                        sendInfo(handler, MSG_CANCEL, 0);
                    }
                }).start();
            }
        });
        btMatch.setOnClickListener(new View.OnClickListener() 
        {
            @Override
            public void onClick(View v) 
            {
                 open();        
                optStart();
                bContinue = true;
                new Thread(new Runnable() {
                    public void run() {
                        byte bmpData[] = new byte[256*288+1078];
                        int  bmpSize[] = new int[1];
                        short nNum[] = new short[1];
                        short nAddr[] = new short[1];
                        short nScore[] = new short[1];
                        if (LibFp.FpValidTempleteNum(0xffffffff, nNum, 10000) != LibFp.FP_OK) return;
                        while (bContinue) {
                            int nRet = LibFp.FpGetImage(0xffffffff, 10000);
                            if (nRet == LibFp.FP_OK) {
                                if ((nRet = LibFp.FpGenChar(0xffffffff, (byte)1, 10000)) == LibFp.FP_OK) {                                  
                                    if ((nRet = LibFp.FpGetImage(0xffffffff, 10000)) == LibFp.FP_OK) {
                                        if ((nRet = LibFp.FpUpBMP(0xffffffff, bmpData, 256*288 + 1078, bmpSize, 10000)) == LibFp.FP_OK) {
                                            final Bitmap bm = BitmapFactory.decodeByteArray(bmpData, 0, 256*288 + 1078);
                                            iv.post(new Runnable() {
                                                public void run() {
                                                    iv.setImageBitmap(bm);
                                                }
                                            }); 
                                            if ((nRet = LibFp.FpSearch(0xffffffff, (byte)1, (short)0, nNum[0], nAddr, nScore, 10000)) == LibFp.FP_OK) {                                         
                                                sendInfo(handler, MSG_FIND, nAddr[0], nScore[0]);
                                            }
                                            else {
                                                sendInfo(handler, MSG_EXIT, nRet);
                                            }
                                            return;
                                        }
                                    }
                                }                               
                            }
                            if (nRet == LibFp.FP_NO_FINGER) {
                                sendInfo(handler, MSG_CMD, nRet);
                            }
                            else if (nRet != LibFp.FP_OK) {
                                sendInfo(handler, MSG_EXIT, nRet);
                                return;
                            }
                        }
                        sendInfo(handler, MSG_CANCEL, 0);
                    }
                }).start();
            }
        });
        btEmpty.setOnClickListener(new View.OnClickListener() 
        {
            @Override
            public void onClick(View v) 
            {
                 open();        
                short nNum[] = new short[1];
                int nRet =  LibFp.FpValidTempleteNum(0xffffffff, nNum, 10000);
                if (nRet == LibFp.FP_OK) {                  
                    if ((nRet = LibFp.FpEmpty(0xffffffff, 10000)) == LibFp.FP_OK) {
                        tvInfo.setText("Çå¿ÕÖ¸ÎÆ¿âÍê³É£¬×ܹ²Çå¿ÕÖ¸ÎÆ " + nNum[0]+ " Ïî");
                        return;
                    }
                }
                tvInfo.setText(LibFp.GetError(nRet));               
            }
        });
        btCancel.setOnClickListener(new View.OnClickListener() 
        {
            @Override
            public void onClick(View v) 
            {
                bContinue = false;  
            }
        });
    }
    @Override

    public void onDestroy() {
        super.onDestroy();
        System.out.println("onDestroy");
    }
    @Override
    protected void onResume()
    {   
        super.onResume();

    }
    @Override
    public void onPause()
    {
        bContinue = false;
        try {
            Thread.sleep(600);
        } catch (InterruptedException e) {
        }
        closeDrive();
        super.onPause();
        LibFp.FpClose();

    }

    private void sendInfo(Handler handler, int nMsg, int arg1){
        Message msg = handler.obtainMessage();
        msg.what = nMsg;
        msg.arg1 = arg1;
        handler.sendMessage(msg);
        System.out.println("sendInfo1");
    }

    private void sendInfo(Handler handler, int nMsg, int arg1, int arg2){
        Message msg = handler.obtainMessage();
        msg.what = nMsg;
        msg.arg1 = arg1;
        msg.arg2 = arg2;
        handler.sendMessage(msg);
        System.out.println("sendInfo2");
    }
    private void optStart() {
        btImage.setEnabled(false);
        btEnrol.setEnabled(false);
        btMatch.setEnabled(false);
        btEmpty.setEnabled(false);
        btCancel.setEnabled(true);
    }
    private void optFinish() {
        btImage.setEnabled(true);
        btEnrol.setEnabled(true);
        btMatch.setEnabled(true);
        btEmpty.setEnabled(true);
        btCancel.setEnabled(false);
    }
    private void openDrive() {
        //btOpen.setEnabled(false);
        btImage.setEnabled(true);
        btEnrol.setEnabled(true);
        btMatch.setEnabled(true);
        btEmpty.setEnabled(true);
        btCancel.setEnabled(false);
        tvInfo.setText("É豸ÒÑ´ò¿ª...");
    }
    private void closeDrive() {
        //btOpen.setEnabled(true);
        btImage.setEnabled(false);
        btEnrol.setEnabled(false);
        btMatch.setEnabled(false);
        btEmpty.setEnabled(false);
        btCancel.setEnabled(false);
        tvInfo.setText("ÒѹرÕÉ豸£¬ÇëÖØдò¿ª...");
    }
    public void onBackPressed() {
        // TODO Auto-generated method stub
        super.onBackPressed();
        gpctrl.SetValue(32, 0);
        gpctrl.GetValue(32);
        this.finish();
    }

    public void open(){
        int nRet = LibFp.FpOpenEx((short)0x2109, (short)0x7638);
        if (nRet == LibFp.FP_ERROR_OPEN) {
            LibFp.GetRootRight();
            nRet = LibFp.FpOpenEx((short)0x2109, (short)0x7638);    
        }
        if (nRet == LibFp.FP_OK) {
        }
        else {

            tvInfo.setText(LibFp.GetError(nRet));
        }
    }
  }

******************* activity_main.xml ****************

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

  <!--  <LinearLayout
        android:id="@+id/linearLayout1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical" >

        <Button
            android:id="@+id/btOpen"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/a1" />
    </LinearLayout>
 --> 
    <LinearLayout
        android:id="@+id/linearLayout2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/linearLayout1"
        android:orientation="horizontal" >

        <Button
            android:id="@+id/btImage"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:enabled="false"
            android:text="@string/a2" />

        <Button
            android:id="@+id/btEnrol"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:enabled="false"
            android:text="@string/a3" />
        <Button
            android:id="@+id/btMatch"
             android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:enabled="false"
            android:text="@string/a4" />

        <Button
            android:id="@+id/btEmpty"
             android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:enabled="false"
            android:text="@string/a5" />

        <Button
            android:id="@+id/btCancel"
             android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:enabled="false"
            android:text="@string/a6" />

    </LinearLayout>

    <TextView
        android:id="@+id/tvInfo"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/linearLayout2"
        android:layout_marginTop="29dp"
        android:text="@string/hello_world"
        tools:context=".MainActivity" />

    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/tvInfo"
        android:layout_marginLeft="58dp"
        android:layout_marginTop="22dp"/>
        <!-- android:src="@drawable/logo" --> 

</RelativeLayout>

***************** strings.xml *****************

<resources>

    <string name="app_name">fingerprint</string>
    <string name="hello_world">Demo程序, 仅供参考!</string>
    <string name="menu_settings">Settings</string>
    <string name="title_activity_main">MainActivity</string>
    <string name="a1">打开设备</string>
    <string name="a2">获取图像</string>
    <string name="a3">录入指纹</string>
    <string name="a4">指纹匹配</string>
    <string name="a5">清空指纹库</string>
    <string name="a6">取消操作</string>

</resources>

1 个答案:

答案 0 :(得分:0)

以下是您发布的代码段中的UI标题的翻译。

A1 Open Device打开设备 A2获取图像获取图像 A3 Fingerprint Entry录入指纹 A4指纹匹配指纹匹配 A5空指纹数据库清空指纹库 A6取消取消操作 演示程序程序 Hello world仅供参考仅供参考