• Android 单字阅读


      1 package com.desmand.screencapture;
      2 
      3 import android.app.Activity;
      4 import android.content.Intent;
      5 import android.os.Bundle;
      6 import android.os.Environment;
      7 import android.os.Handler;
      8 import android.os.Message;
      9 import android.util.Log;
     10 import android.view.KeyEvent;
     11 import android.view.View;
     12 import android.widget.Button;
     13 import android.widget.TextView;
     14 import android.widget.Toast;
     15 
     16 import java.io.BufferedInputStream;
     17 import java.io.BufferedReader;
     18 import java.io.File;
     19 import java.io.FileInputStream;
     20 import java.io.IOException;
     21 import java.io.InputStreamReader;
     22 import java.util.regex.Matcher;
     23 import java.util.regex.Pattern;
     24 
     25 public class MainActivity extends Activity implements View.OnClickListener, Runnable {
     26 
     27     private static String TAG = "ScreenCapture";
     28     Thread showTextThread;
     29     Button start_service_btn;
     30     private TextView show_text_tv;
     31     private String readerString;
     32     private String file_path = Environment.getExternalStorageDirectory().getAbsolutePath() + "/Panasonic/";
     33     private String fileName = file_path + "test.txt";
     34     private char testChar;
     35 
     36     private boolean isRun;
     37 
     38 
     39     @Override
     40     protected void onCreate(Bundle savedInstanceState) {
     41         super.onCreate(null);
     42 
     43         startService(new Intent(this, ScreenCaptureService.class));
     44         this.finish();
     45 
     46 //        super.onCreate(savedInstanceState);
     47         setContentView(R.layout.activity_main);
     48 
     49         start_service_btn = (Button) findViewById(R.id.start_service_btn);
     50         start_service_btn.setOnClickListener(this);
     51         show_text_tv = (TextView) findViewById(R.id.show_text_tv);
     52 
     53         showTextThread = new Thread(this);
     54 
     55         File filePath = new File(file_path);
     56         if (!filePath.exists()) {
     57             Log.i(TAG, "----------ERROR----------");
     58         }
     59     }
     60 
     61     Handler myHandler = new Handler() {
     62         public void handleMessage(Message msg) {
     63             show_text_tv.setText(String.valueOf(testChar));
     64             super.handleMessage(msg);
     65         }
     66     };
     67 
     68     @Override
     69     public void onClick(View v) {
     70         switch (v.getId()) {
     71             case R.id.start_service_btn:
     72                 if (showTextThread.isAlive()) {
     73                     isRun = false;
     74                     showTextThread.interrupt();
     75                 }
     76                 showTextThread = new Thread(this);
     77                 showTextThread.start();
     78                 isRun = true;
     79 
     80 //                startService(new Intent(this, ScreenCaptureService.class));
     81 //                this.finish();
     82                 break;
     83             default:
     84                 break;
     85         }
     86     }
     87 
     88     @Override
     89     public void run() {
     90 //        List<String> lines = new ArrayList<>();
     91 //        BufferedReader br = null;
     92 //        try {
     93 //            File file = new File(fileName);
     94 //            InputStream inputStream = new FileInputStream(file);
     95 //            Reader reader = new InputStreamReader(inputStream, "GBK");
     96 //            br = new BufferedReader(reader);
     97 //        } catch (UnsupportedEncodingException | FileNotFoundException e) {
     98 //            e.printStackTrace();
     99 //        }
    100 //
    101 //        try {
    102 //            while ((readerString = br.readLine()) != null) {
    103 //                lines.add(readerString);
    104 //                myHandler.sendEmptyMessage(0);
    105 //                Log.i(TAG, readerString);
    106 //                Thread.sleep(200);
    107 //            }
    108 //            br.close();
    109 //        } catch (IOException | InterruptedException e) {
    110 //            e.printStackTrace();
    111 //        }
    112 
    113 
    114         File file = new File(fileName);
    115         BufferedReader reader;
    116         String text = "";
    117         try {
    118             FileInputStream fis = new FileInputStream(file);
    119             BufferedInputStream in = new BufferedInputStream(fis);
    120             in.mark(4);
    121             byte[] first3bytes = new byte[3];
    122             in.read(first3bytes);//找到文档的前三个字节并自动判断文档类型。
    123             in.reset();
    124             if (first3bytes[0] == (byte) 0xEF && first3bytes[1] == (byte) 0xBB && first3bytes[2] == (byte) 0xBF) {// utf-8
    125                 reader = new BufferedReader(new InputStreamReader(in, "utf-8"));
    126             } else if (first3bytes[0] == (byte) 0xFF && first3bytes[1] == (byte) 0xFE) {
    127                 reader = new BufferedReader(new InputStreamReader(in, "unicode"));
    128             } else if (first3bytes[0] == (byte) 0xFE && first3bytes[1] == (byte) 0xFF) {
    129                 reader = new BufferedReader(new InputStreamReader(in, "utf-16be"));
    130             } else if (first3bytes[0] == (byte) 0xFF && first3bytes[1] == (byte) 0xFF) {
    131                 reader = new BufferedReader(new InputStreamReader(in, "utf-16le"));
    132             } else {
    133                 reader = new BufferedReader(new InputStreamReader(in, "GBK"));
    134             }
    135 
    136             readerString = reader.readLine();
    137             while (readerString != null) {
    138                 if (isRun) {
    139                     for (int i = 0; i < readerString.length(); i++) {// 遍历字符串每一个字符
    140 
    141                         // 使用正则表达式判断字符是否属于汉字编码
    142                         Pattern p = Pattern.compile("[u4e00-u9fa5]");
    143                         Matcher m = p.matcher(readerString);
    144                         if (m.find()) {// 如果是汉字
    145                             testChar = readerString.charAt(i);
    146                             Log.i(TAG, "testChar: " + testChar);
    147                             myHandler.sendEmptyMessage(0);
    148                         }
    149 
    150                         Thread.sleep(300);
    151 
    152 //                    String[] splitStr = readerString.split("[\s,.;。,;]");
    153 //                    for (String str : splitStr) {
    154 //                        if (!str.trim().equals("")) {
    155 //                            testChar = str.trim();
    156 //                            Log.i(TAG, "testChar: " + testChar);
    157 //                            myHandler.sendEmptyMessage(0);
    158 //                            Thread.sleep(400);
    159 //                        }
    160 //                    }
    161 
    162 //                    StringBuffer english = new StringBuffer();
    163 //                    String regex = "[^u4e00-u9fa5。,?”“《》:!——-、]";
    164 //                    Pattern pattern = Pattern.compile(regex);
    165 //                    Matcher matcher = pattern.matcher(readerString);
    166 //                    while (matcher.find()) {
    167 //                        testChar = null;
    168 //                        english.append(matcher.group(1));
    169 //                        testChar = english.toString();
    170 //                        Log.i(TAG, "testChar: " + testChar);
    171 //                        myHandler.sendEmptyMessage(0);
    172 //                    }
    173 
    174                     }
    175                 }
    176                 readerString = reader.readLine();
    177             }
    178             reader.close();
    179         } catch (IOException | InterruptedException e) {
    180             e.printStackTrace();
    181         }
    182     }
    183 
    184 
    185     @Override
    186     public boolean onKeyDown(int keyCode, KeyEvent event) {
    187         if (keyCode == KeyEvent.KEYCODE_BACK) {
    188             isRun = false;
    189             this.finish();
    190         }
    191         return super.onKeyDown(keyCode, event);
    192     }
    193 
    194 
    195     @Override
    196     protected void onDestroy() {
    197         super.onDestroy();
    198         isRun = false;
    199         Toast.makeText(getApplicationContext(), "MainActivity onDestroy", Toast.LENGTH_SHORT).show();
    200     }
    201 
    202 
    203 }
  • 相关阅读:
    [Quote] Android Graphics Architecture
    New NFC log
    [Quote] 3.6 Namespaces
    NFC DAL(Driver Abstraction Layer) and OSAL(Operating System Abstraction Layer)
    Finance&Invest&Economics URL Links
    Concepts
    Tracking NFC Flow
    NFC log
    [IoE] About AllJoyn™
    [Quote] How does getSystemService() work exactly?
  • 原文地址:https://www.cnblogs.com/fansen/p/5210585.html
Copyright © 2020-2023  润新知