package com.desmand.screencapture;

 import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Environment;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.KeyEvent;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast; import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.regex.Matcher;
import java.util.regex.Pattern; public class MainActivity extends Activity implements View.OnClickListener, Runnable { private static String TAG = "ScreenCapture";
Thread showTextThread;
Button start_service_btn;
private TextView show_text_tv;
private String readerString;
private String file_path = Environment.getExternalStorageDirectory().getAbsolutePath() + "/Panasonic/";
private String fileName = file_path + "test.txt";
private char testChar; private boolean isRun; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(null); startService(new Intent(this, ScreenCaptureService.class));
this.finish(); // super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); start_service_btn = (Button) findViewById(R.id.start_service_btn);
start_service_btn.setOnClickListener(this);
show_text_tv = (TextView) findViewById(R.id.show_text_tv); showTextThread = new Thread(this); File filePath = new File(file_path);
if (!filePath.exists()) {
Log.i(TAG, "----------ERROR----------");
}
} Handler myHandler = new Handler() {
public void handleMessage(Message msg) {
show_text_tv.setText(String.valueOf(testChar));
super.handleMessage(msg);
}
}; @Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.start_service_btn:
if (showTextThread.isAlive()) {
isRun = false;
showTextThread.interrupt();
}
showTextThread = new Thread(this);
showTextThread.start();
isRun = true; // startService(new Intent(this, ScreenCaptureService.class));
// this.finish();
break;
default:
break;
}
} @Override
public void run() {
// List<String> lines = new ArrayList<>();
// BufferedReader br = null;
// try {
// File file = new File(fileName);
// InputStream inputStream = new FileInputStream(file);
// Reader reader = new InputStreamReader(inputStream, "GBK");
// br = new BufferedReader(reader);
// } catch (UnsupportedEncodingException | FileNotFoundException e) {
// e.printStackTrace();
// }
//
// try {
// while ((readerString = br.readLine()) != null) {
// lines.add(readerString);
// myHandler.sendEmptyMessage(0);
// Log.i(TAG, readerString);
// Thread.sleep(200);
// }
// br.close();
// } catch (IOException | InterruptedException e) {
// e.printStackTrace();
// } File file = new File(fileName);
BufferedReader reader;
String text = "";
try {
FileInputStream fis = new FileInputStream(file);
BufferedInputStream in = new BufferedInputStream(fis);
in.mark(4);
byte[] first3bytes = new byte[3];
in.read(first3bytes);//找到文档的前三个字节并自动判断文档类型。
in.reset();
if (first3bytes[0] == (byte) 0xEF && first3bytes[1] == (byte) 0xBB && first3bytes[2] == (byte) 0xBF) {// utf-8
reader = new BufferedReader(new InputStreamReader(in, "utf-8"));
} else if (first3bytes[0] == (byte) 0xFF && first3bytes[1] == (byte) 0xFE) {
reader = new BufferedReader(new InputStreamReader(in, "unicode"));
} else if (first3bytes[0] == (byte) 0xFE && first3bytes[1] == (byte) 0xFF) {
reader = new BufferedReader(new InputStreamReader(in, "utf-16be"));
} else if (first3bytes[0] == (byte) 0xFF && first3bytes[1] == (byte) 0xFF) {
reader = new BufferedReader(new InputStreamReader(in, "utf-16le"));
} else {
reader = new BufferedReader(new InputStreamReader(in, "GBK"));
} readerString = reader.readLine();
while (readerString != null) {
if (isRun) {
for (int i = 0; i < readerString.length(); i++) {// 遍历字符串每一个字符 // 使用正则表达式判断字符是否属于汉字编码
Pattern p = Pattern.compile("[\u4e00-\u9fa5]");
Matcher m = p.matcher(readerString);
if (m.find()) {// 如果是汉字
testChar = readerString.charAt(i);
Log.i(TAG, "testChar: " + testChar);
myHandler.sendEmptyMessage(0);
} Thread.sleep(300); // String[] splitStr = readerString.split("[\\s,.;。,;]");
// for (String str : splitStr) {
// if (!str.trim().equals("")) {
// testChar = str.trim();
// Log.i(TAG, "testChar: " + testChar);
// myHandler.sendEmptyMessage(0);
// Thread.sleep(400);
// }
// } // StringBuffer english = new StringBuffer();
// String regex = "[^\u4e00-\u9fa5。,?”“《》:!——-、]";
// Pattern pattern = Pattern.compile(regex);
// Matcher matcher = pattern.matcher(readerString);
// while (matcher.find()) {
// testChar = null;
// english.append(matcher.group(1));
// testChar = english.toString();
// Log.i(TAG, "testChar: " + testChar);
// myHandler.sendEmptyMessage(0);
// } }
}
readerString = reader.readLine();
}
reader.close();
} catch (IOException | InterruptedException e) {
e.printStackTrace();
}
} @Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
isRun = false;
this.finish();
}
return super.onKeyDown(keyCode, event);
} @Override
protected void onDestroy() {
super.onDestroy();
isRun = false;
Toast.makeText(getApplicationContext(), "MainActivity onDestroy", Toast.LENGTH_SHORT).show();
} }

Android 单字阅读的更多相关文章

  1. android 资讯阅读器

    最近找申请到了一个不错的接口 , 非常适合拿来写一个资讯类的app. 现在着手写,随写随更.也算是抛砖引玉.烂尾请勿喷.╭(╯^╰)╮ android 资讯阅读器 第一阶段目标样式(滑动切换标签 , ...

  2. Android MuPDF 阅读PDF文件

    MuPDF是一款轻量级的开源软件,可以用来阅读PDF文件.下载完源代码以后,想要运行成功,除了Android SDK之外,还需要Android NDK环境,因此有点麻烦. 但是一旦安装完必须的环境以后 ...

  3. Android拓展系列(10)--使用Android Studio阅读整个Android源码

    之前一直在windows下用source insight阅读android源码,效果非常好.后来远程异地服务器,网络限制,一直用ssh + vim,现在主要还是以这种方式.最近发现一个不错的东西(早就 ...

  4. [前言] 实现一个Android电子书阅读APP

    大家好,我是小方,我将在接下来的几篇文章中从零实现一个网络小说阅读器,从安卓编程最基础的部分讲起,直至成功完成我们的应用,从新建一个项目开始,不断添加新的代码,添加新的界面,循序渐进,涵盖所有我们需要 ...

  5. 【新建项目&使用viewPager】实现一个Android电子书阅读APP

    本章结尾处已放出应用DEMO,已经实现所有本文及后续文章所述全部功能,大家可以先下载下来玩玩看,欢迎在本文下方评论,小方很需要鼓励支持!!! 新建一个项目 呼-我们即将步入安卓开发之旅了,首先要新建一 ...

  6. 【RecyclerView与Glide】实现一个Android电子书阅读APP

    http://www.cnblogs.com/xfangs/ 欢迎在本文下方评论,小方很需要鼓励支持!!! 本系列教程仅供学习交流 小说阅读器最终实现效果见 第一篇博文 前言 在上一篇文章中,我们实现 ...

  7. android小说阅读源码、bilibili源码、MVP新闻源码等

    Android精选源码 一款基于 MVP+RxJava2+Retrofit2 的应用--熊猫眼 android 五子棋源码分享 android实现全国地图点击效果 android实现立体图案绘制的代码 ...

  8. android 资讯阅读器(二)

    接着上次的博客,上次移植完了tab以后整个app的框架就算是定下来了. 本次目标: 1.数据的获取与展示(ListView) 2.官方的下拉刷新效果(SwipeRefreshLayout) 3.数据接 ...

  9. 50 Android Hacks阅读笔记

    Hack 1.善用weightSum和layout_weight. 问题提出:尝试做一个button的宽度是父View的一半的效果. 关键词:weightSum = 1 , layout_weight ...

随机推荐

  1. JAVA学习资料整理

    今天偶然间发现之前一个群里发过的一篇关于JAVA学习资料的东西.本着服务大众的精神,搬来了博客园: <JAVA编程思想>第四版(英文原版) 下载地址:http://115.com/file ...

  2. Linux主机在LNMP环境中同时运行多个PHP版本

    这次遇到的问题是,客户网站已经使用PHP5.4运行多个网站程序,但是新安装的程序需要使用PHP5.3. 从我之前的经验来看,给网站更换PHP版本,可能会带来意想不到的后果.比如,之前某客户Discuz ...

  3. Extension method for type

    扩展其实真的很简单 msdn是这样规定扩展方法的:"扩展方法被定义为静态方法,但它们是通过实例方法语法进行调用的. 它们的第一个参数指定该方法作用于哪个类型,并且该参数以 this 修饰符为 ...

  4. Codeforces Round #345 (Div. 1) B. Image Preview

    Vasya's telephone contains n photos. Photo number 1 is currently opened on the phone. It is allowed ...

  5. 2014年辛星完全解读Javascript第一节

    ***************概述*************** 1.Javascript是一种原型化继承的基于对象的动态类型的脚本语言,它区分大小写,主要运行在客户端,用户即使响应用户的操作并进行数 ...

  6. uCGUI窗口的创建过程分析

    一.相关结构体和变量 窗口管理结构体 /* 窗口管理结构体 共30个字节 */ struct WM_Obj { GUI_RECT Rect; //窗口尺寸(x0,y0,x1,y1) 8个字节 GUI_ ...

  7. 制作标签(Label)

    怎样判断是否应当使用标签 当游戏中出现需要程序输出文字的地方,就要使用标签. 创建标签 在Unity顶部选择NGUI菜单.选择Create->Label,即可创建一个Label. Label的文 ...

  8. 一个简单的php分页类代码(转载)

    入门级php分页类 原文地址:http://www.xfcodes.com/php/fenye/3608.htm 时间:2015-12-16 20:52:00来源:网络 php分页类. 复制代码代码如 ...

  9. vs git .ignore

    ## Ignore Visual Studio temporary files, build results, and## files generated by popular Visual Stud ...

  10. tomcat 7 下添加 shared/lib 文件夹

    你打开tomcat7\conf\catalina.properties文件再打开tomcat5的,看完后, 你就知道了 tomcat 5.5.35 # # List of comma-separate ...