package com.poqop.document;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.StringTokenizer;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.apache.tools.ant.taskdefs.Sleep;
import android.app.Activity;
import android.content.ContentResolver;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.DialogInterface.OnClickListener;
import android.graphics.Bitmap;
import android.graphics.drawable.BitmapDrawable;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.provider.Settings;
import android.provider.Settings.SettingNotFoundException;
import android.util.Log;
import android.view.*;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.View.OnCreateContextMenuListener;
import android.view.WindowManager.LayoutParams;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
import android.widget.FrameLayout;
import android.widget.Gallery;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.PopupWindow;
import android.widget.SeekBar;
import android.widget.SeekBar.OnSeekBarChangeListener;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.AdapterView.OnItemSelectedListener;
import com.hyrt.cei.R;
import com.hyrt.cei.adapter.ReportMuluAdapter;
import com.hyrt.cei.ui.ebook.ReadReportActivity;
import com.hyrt.cei.util.EncryptDecryption;
import com.hyrt.cei.util.MyTools;
import com.hyrt.cei.vo.Report;
import com.poqop.document.Dao.MyReadDao;
import com.poqop.document.events.CurrentPageListener;
import com.poqop.document.events.DecodingProgressListener;
import com.poqop.document.models.CurrentPageModel;
import com.poqop.document.models.DecodingProgressModel;
import com.poqop.document.models.ZoomModel;
public abstract class BaseViewerActivity extends Activity implements
DecodingProgressListener, CurrentPageListener, OnItemSelectedListener {
private static final String DOCUMENT_VIEW_STATE_PREFERENCES = "DjvuDocumentViewState";
private DecodeService decodeService;
private DocumentView documentView;
private ViewerPreferences viewerPreferences;
private Toast pageNumberToast;
private CurrentPageModel currentPageModel;
private LayoutInflater inflater;
private ImageView home, mulu, fontsize, light, addshuqian, shuqian;
FrameLayout frameLayout;
ZoomModel zoomModel;
private MyReadDao dao;
// private Gallery gallery;
private Bitmap[] mImageIds;
// private ImageAdapter adapter;
GestureDetector gestureScanner;
private List<HashMap<String, String>> xml;
private float oldFontSize;
private Report report;
private List<PopupWindow> poplist;
private String pdfPath;
private int startLight;
/**
* Called when the activity is first created.
*/
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Toast.makeText(this, "双击屏幕放大,长按屏幕缩小", 0).show();
initDecodeService();
poplist = new ArrayList<PopupWindow>();
inflater = LayoutInflater.from(this);
zoomModel = new ZoomModel();
final DecodingProgressModel progressModel = new DecodingProgressModel();
progressModel.addEventListener(this);
currentPageModel = new CurrentPageModel();
currentPageModel.addEventListener(this);
documentView = new DocumentView(this, zoomModel, progressModel,
currentPageModel);
zoomModel.addEventListener(documentView);
documentView.setLayoutParams(new ViewGroup.LayoutParams(
ViewGroup.LayoutParams.FILL_PARENT,
ViewGroup.LayoutParams.FILL_PARENT));
decodeService.setContentResolver(getContentResolver());
decodeService.setContainerView(documentView);
documentView.setDecodeService(decodeService);
try {
decodeService.open(getIntent().getData());
MyTools.exitShow(this, documentView, "pdf解析错误");
} catch (Exception e) {
e.printStackTrace();
}
viewerPreferences = new ViewerPreferences(this);
dao = new MyReadDao(this);
View contextView = inflater.inflate(R.layout.yjbg_read_report, null);
frameLayout = (FrameLayout) contextView
.findViewById(R.id.yjbg_read_report_pdfview);
frameLayout.addView(documentView);
// 初始化首选项,加以读,独到多少页等
setFullScreen();
setContentView(contextView);
initView();
// 低栏的沉浮
ImageView imageView = (ImageView) contextView
.findViewById(R.id.yjbg_read_report_menu_is);
imageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
findViewById(R.id.yjbg_read_report_menu).setVisibility(
View.VISIBLE);
}
});
ImageView imageBottom = (ImageView) contextView
.findViewById(R.id.yjbg_read_report_bottom_gone);
imageBottom.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
findViewById(R.id.yjbg_read_report_menu).setVisibility(
View.GONE);
}
});
TextView title = (TextView) findViewById(R.id.yjbg_read_report_title);
title.setText(getIntent().getStringExtra("name"));
report = (Report) getIntent().getExtras().get("report");
if (getIntent() != null) {
pdfPath = getIntent().getData().toString().replace("file://", "");// getIntent().getExtras().get("pdfPath").toString();
}
final SharedPreferences sharedPreferences = getSharedPreferences(
DOCUMENT_VIEW_STATE_PREFERENCES, 0);
documentView.goToPage(sharedPreferences.getInt(getIntent().getData()
.toString(), 0));
documentView.showDocument();
viewerPreferences.addRecent(getIntent().getData());
}
public void decodingProgressChanged(final int currentlyDecoding) {
runOnUiThread(new Runnable() {
public void run() {
getWindow().setFeatureInt(
Window.FEATURE_INDETERMINATE_PROGRESS,
currentlyDecoding == 0 ? 10000 : currentlyDecoding);
}
});
}
// 显示当前页面
public void currentPageChanged(int pageIndex) {
final String pageText = (pageIndex + 1) + "/"
+ decodeService.getPageCount();
if (pageNumberToast != null) {
pageNumberToast.setText(pageText);
} else {
pageNumberToast = Toast.makeText(this, pageText, 300);
}
pageNumberToast.setGravity(Gravity.TOP | Gravity.LEFT, 0, 0);
// pageNumberToast.show();
saveCurrentPage();
}
private void setWindowTitle() {
final String name = getIntent().getData().getLastPathSegment();
getWindow().setTitle(name);
}
@Override
protected void onPostCreate(Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
setWindowTitle();
}
private void setFullScreen() {
}
private void initDecodeService() {
if (decodeService == null) {
decodeService = createDecodeService();
}
}
protected abstract DecodeService createDecodeService();
@Override
protected void onStop() {
super.onStop();
}
@Override
protected void onDestroy() {
// 文件加密
try {
EncryptDecryption.EncryptReport(pdfPath);
} catch (Exception e) {
e.printStackTrace();
}
decodeService.recycle();
decodeService = null;
documentView=null;
super.onDestroy();
}
private void saveCurrentPage() {
final SharedPreferences sharedPreferences = getSharedPreferences(
DOCUMENT_VIEW_STATE_PREFERENCES, 0);
final SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putInt(getIntent().getData().toString(),
documentView.getCurrentPage());
editor.commit();
}
OnClickListener onselect = new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
HashMap<String, String> map = xml.get(which);
String page = map.get("page");
documentView.goToPage(Integer.parseInt(page));
}
};
private void initView() {
home = (ImageView) findViewById(R.id.yjbg_read_report_home);
home.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(BaseViewerActivity.this,
ReadReportActivity.class);
startActivity(intent);
BaseViewerActivity.this.finish();
}
});
mulu = (ImageView) findViewById(R.id.yjbg_read_report_mulu);
mulu.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// 显示目录
// pop实现字体大小调节
View contentView = LayoutInflater.from(getApplicationContext())
.inflate(R.layout.yjbg_pop_mulu, null);
final PopupWindow mPopupWindow = new PopupWindow(contentView,
500, 600);
ListView view = (ListView) contentView
.findViewById(R.id.yjbg_mulu_lv);
List<String> muluData = new ArrayList<String>();
// muluData.add("aaa");
if (report != null && report.getMulu() != null
&& !report.getMulu().equals("")) {
String muluStr = report.getMulu();
String[] strs = muluStr.split("\n");// "页"
for (String string : strs) {
muluData.add(string);// +"页"
}
}
if (muluData.size() > 0) {
view.setAdapter(new ReportMuluAdapter(
BaseViewerActivity.this, muluData));
view.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
int page = 0;
try {
String item = arg0.getAdapter().getItem(arg2)
.toString();
/*
* String[] strs = item.split(",");
* if(strs.length!=2){ strs = item.split(","); }
*/
// if(strs.length==2){
String regex = "\\d{1,}$";
Pattern p = Pattern.compile(regex);
Matcher matcher = p.matcher(item);
if(matcher.find()){
String count=matcher.group();
page = Integer.parseInt(count);// strs[1].replace("页","")
}
if (page > documentView.pages.size()||page==0) {
Toast.makeText(BaseViewerActivity.this,
"页数不对!", 2).show();
return;
}
documentView.goToPage(page - 1);
for (PopupWindow window : poplist) {
if (window.isShowing()) {
window.dismiss();
}
}
// }
} catch (NumberFormatException e) {
// TODO Auto-generated catch block
Toast.makeText(BaseViewerActivity.this,
"目录格式不对,联系管理员", 2).show();
mPopupWindow.dismiss();
e.printStackTrace();
}
}
});
}
// 声明一个弹出框
mPopupWindow.setFocusable(true);
mPopupWindow.setTouchable(true); // 设置PopupWindow可触摸
mPopupWindow.setOutsideTouchable(true); // 设置非PopupWindow区域可触摸
mPopupWindow.setBackgroundDrawable(new BitmapDrawable());
mPopupWindow.showAtLocation(documentView, Gravity.BOTTOM
| Gravity.LEFT, 0, 80);
poplist.add(mPopupWindow);
// 获取到页数
/*
* int pageCount=decodeService.getPageCount();
* documentView.goToPage(pageCount);
* gallery.setVisibility(View.VISIBLE);
* gallery.setSelection(documentView.getCurrentPage());
*/
}
});
fontsize = (ImageView) findViewById(R.id.yjbg_read_report_fontsize);
fontsize.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
oldFontSize = zoomModel.getZoom(); // 原始值是1
// frameLayout.addView(createZoomControls(zoomModel));
// pop实现字体大小调节
View contentView = LayoutInflater.from(getApplicationContext())
.inflate(R.layout.yjbg_readreport_light, null);
// 声明一个弹出框
final PopupWindow mPopupWindow = new PopupWindow(contentView,
450, 300);
mPopupWindow.setFocusable(true);
mPopupWindow.setTouchable(true); // 设置PopupWindow可触摸
mPopupWindow.setOutsideTouchable(true); // 设置非PopupWindow区域可触摸
mPopupWindow.setBackgroundDrawable(new BitmapDrawable());
mPopupWindow
.showAtLocation(documentView, Gravity.CENTER, 0, 30);
TextView title = (TextView) contentView
.findViewById(R.id.yjbg_light_title);
ImageButton jiebut = (ImageButton) contentView
.findViewById(R.id.yjbg_light_jie);
ImageButton jiabut = (ImageButton) contentView
.findViewById(R.id.yjbg_light_jia);
ImageButton exitbut = (ImageButton) contentView
.findViewById(R.id.yjbg_light_exit);
ImageButton yesbut = (ImageButton) contentView
.findViewById(R.id.yjbg_light_yes);
final SeekBar bar = (SeekBar) contentView
.findViewById(R.id.yjbg_light_seekbar);
bar.setProgress((int) ((zoomModel.getZoom() - 1) * 100));
title.setText("字体大小调节");
bar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onProgressChanged(SeekBar seekBar,
int progress, boolean fromUser) {
// float size = zoomModel.getZoom();
zoomModel.setZoom((float) progress / 100f + 1);
zoomModel.commit();
}
});
jiabut.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
float size = zoomModel.getZoom();
zoomModel.setZoom(size + 0.2f);
bar.setProgress(bar.getProgress() + 20);
zoomModel.commit();
}
});
jiebut.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
float size = zoomModel.getZoom();
zoomModel.setZoom(size - 0.2f);
bar.setProgress(bar.getProgress() - 20);
zoomModel.commit();
}
});
exitbut.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
zoomModel.setZoom(oldFontSize);
zoomModel.commit();
for (PopupWindow window : poplist) {
if (window.isShowing()) {
window.dismiss();
}
}
}
});
yesbut.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
for (PopupWindow window : poplist) {
if (window.isShowing()) {
window.dismiss();
}
}
}
});
poplist.add(mPopupWindow);
}
});
light = (ImageView) findViewById(R.id.yjbg_read_report_light);
light.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// pop实现屏幕的亮度调节
View contentView = LayoutInflater.from(getApplicationContext())
.inflate(R.layout.yjbg_readreport_light, null);
// 声明一个弹出框
final PopupWindow mPopupWindow = new PopupWindow(contentView,
450, 300);
mPopupWindow.setFocusable(true);
mPopupWindow.setTouchable(true); // 设置PopupWindow可触摸
mPopupWindow.setOutsideTouchable(true); // 设置非PopupWindow区域可触摸
mPopupWindow.setBackgroundDrawable(new BitmapDrawable());
mPopupWindow
.showAtLocation(documentView, Gravity.CENTER, 0, 30);
ImageButton jiebut = (ImageButton) contentView
.findViewById(R.id.yjbg_light_jie);
ImageButton jiabut = (ImageButton) contentView
.findViewById(R.id.yjbg_light_jia);
ImageButton exitbut = (ImageButton) contentView
.findViewById(R.id.yjbg_light_exit);
ImageButton yesbut = (ImageButton) contentView
.findViewById(R.id.yjbg_light_yes);
final SeekBar bar = (SeekBar) contentView
.findViewById(R.id.yjbg_light_seekbar);
bar.setMax(255);
startLight = getScreenBrightness(BaseViewerActivity.this);
bar.setProgress(startLight);
bar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub
}
@Override
public void onProgressChanged(SeekBar seekBar,
int progress, boolean fromUser) {
// TODO Auto-generated method stub
if (progress > 20) {
changeLight(progress);
}
}
});
// 事件
jiebut.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int now = bar.getProgress();
if (now <= 20) {
for (PopupWindow window : poplist) {
if (window.isShowing()) {
window.dismiss();
}
}
return;
}
bar.setProgress(now - 20);
changeLight(now - 20);
}
});
jiabut.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int now = bar.getProgress();
bar.setProgress(now + 20);
changeLight(now + 20);
}
});
exitbut.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
bar.setProgress(startLight);
changeLight(startLight);
for (PopupWindow window : poplist) {
if (window.isShowing()) {
window.dismiss();
}
}
return;
}
});
yesbut.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
saveBrightness(
BaseViewerActivity.this.getContentResolver(),
bar.getProgress());
for (PopupWindow window : poplist) {
if (window.isShowing()) {
window.dismiss();
}
}
}
});
poplist.add(mPopupWindow);
}
});
addshuqian = (ImageView) findViewById(R.id.yjbg_read_report_addshuqian);
addshuqian.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// pop实现字体大小调节
View contentView = LayoutInflater.from(getApplicationContext())
.inflate(R.layout.yjbg_pop_add_shuqian, null);
final PopupWindow mPopupWindow = new PopupWindow(contentView,
450, 300);
mPopupWindow.setFocusable(true);
mPopupWindow.setTouchable(true); // 设置PopupWindow可触摸
mPopupWindow.setOutsideTouchable(true); // 设置非PopupWindow区域可触摸
mPopupWindow.setBackgroundDrawable(new BitmapDrawable());
mPopupWindow
.showAtLocation(documentView, Gravity.CENTER, 0, 30);
ImageButton yesBut = (ImageButton) contentView
.findViewById(R.id.yjbg_add_shuqian_yes);
ImageButton exitBut = (ImageButton) contentView
.findViewById(R.id.yjbg_add_shuqian_exit);
yesBut.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (dao.getMyRead(documentView.getCurrentPage() + "",
viewerPreferences.getYourRead())) {
/*Toast.makeText(BaseViewerActivity.this, "书签已存在!", 2)
.show();*/
MyTools.exitShow(BaseViewerActivity.this,BaseViewerActivity.this.getWindow().getDecorView(), "书签已存在!");
if(mPopupWindow.isShowing()){
mPopupWindow.dismiss();
}
return;
}
long id = dao.addMyRead(
viewerPreferences.getYourRead(),
documentView.getCurrentPage() + "",
report.getKey());
if (id != -1) {
/*Toast.makeText(BaseViewerActivity.this, "添加书签成功!",
2).show();*/
MyTools.exitShow(BaseViewerActivity.this,BaseViewerActivity.this.getWindow().getDecorView(), "添加书签成功!");
if(mPopupWindow.isShowing()){
mPopupWindow.dismiss();
}
} else {
/*Toast.makeText(BaseViewerActivity.this, "添加书签失败!",
2).show();*/
MyTools.exitShow(BaseViewerActivity.this,BaseViewerActivity.this.getWindow().getDecorView(), "添加书签失败!");
if(mPopupWindow.isShowing()){
mPopupWindow.dismiss();
}
}
for (PopupWindow window : poplist) {
if (window.isShowing()) {
window.dismiss();
}
}
}
});
exitBut.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mPopupWindow.dismiss();
}
});
poplist.add(mPopupWindow);
}
});
shuqian = (ImageView) findViewById(R.id.yjbg_read_report_shuqian);
shuqian.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// pop实现字体大小调节
View contentView = LayoutInflater.from(getApplicationContext())
.inflate(R.layout.yjbg_pop_mulu, null);
final PopupWindow mPopupWindow = new PopupWindow(contentView,
350, 250);
ListView view = (ListView) contentView
.findViewById(R.id.yjbg_mulu_lv);
view.setAdapter(new YourReadAdapter(BaseViewerActivity.this,
viewerPreferences.getYourRead(),getIntent().getStringExtra("name")!=null?getIntent().getStringExtra("name"):""));
view.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
@SuppressWarnings("unchecked")
Map<String, String> map = (Map<String, String>) arg0
.getAdapter().getItem(arg2);
// 解密文件
if (map.get("key") == null || map.get("key").equals("")) {
Toast.makeText(BaseViewerActivity.this,
"后台加密错误!", 2).show();
} else {
// 此处解密阅读
try {
EncryptDecryption.DecryptionReport(
map.get("book_path"),
map.get("key").substring(
0,
map.get("key").toString()
.length() - 1));
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
documentView.goToPage(Integer.parseInt(map
.get("pageNo")));
for (PopupWindow window : poplist) {
if (window.isShowing()) {
window.dismiss();
}
}
}
}
});
// 声明一个弹出框
mPopupWindow.setFocusable(true);
mPopupWindow.setTouchable(true); // 设置PopupWindow可触摸
mPopupWindow.setOutsideTouchable(true); // 设置非PopupWindow区域可触摸
mPopupWindow.setBackgroundDrawable(new BitmapDrawable());
mPopupWindow.showAtLocation(documentView, Gravity.BOTTOM
| Gravity.RIGHT, 0, 80);
/*
* Intent intent=new Intent(BaseViewerActivity.this,
* BookQianActivity.class); startActivity(intent);
*/
poplist.add(mPopupWindow);
}
});
}
/** * 获取屏幕的亮度 */
public static int getScreenBrightness(Activity activity) {
int nowBrightnessValue = 0;
ContentResolver resolver = activity.getContentResolver();
try {
nowBrightnessValue = android.provider.Settings.System.getInt(
resolver, Settings.System.SCREEN_BRIGHTNESS);
}
catch (Exception e) {
e.printStackTrace();
}
return nowBrightnessValue;
}
// 那如何修改屏幕的亮度呢?
/** * 设置亮度 */
public static void setBrightness(Activity activity, int brightness) {
// Settings.System.putInt(activity.getContentResolver(),
// Settings.System.SCREEN_BRIGHTNESS_MODE,
// Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL);
WindowManager.LayoutParams lp = activity.getWindow().getAttributes();
lp.screenBrightness = Float.valueOf(brightness) * (1f / 255f);
Log.d("lxy", "set lp.screenBrightness == " + lp.screenBrightness);
activity.getWindow().setAttributes(lp);
}
// 那么,能设置了,但是为什么还是会出现,设置了,没反映呢?
// 嘿嘿,那是因为,开启了自动调节功能了,那如何关闭呢?这才是最重要的:
/** * 停止自动亮度调节 */
public static void stopAutoBrightness(Activity activity) {
Settings.System.putInt(activity.getContentResolver(),
Settings.System.SCREEN_BRIGHTNESS_MODE,
Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL);
}
// 能开启,那自然应该能关闭了哟哟,那怎么关闭呢?很简单的:
/**
* * 开启亮度自动调节 *
*
* @param activity
*/
public static void startAutoBrightness(Activity activity) {
Settings.System.putInt(activity.getContentResolver(),
Settings.System.SCREEN_BRIGHTNESS_MODE,
Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC);
}
// 至此,应该说操作亮度的差不多都有了,结束!
// 哎,本来认为是应该结束了,但是悲剧得是,既然像刚才那样设置的话,只能在当前的activity中有作用,一段退出的时候,会发现毫无作用,悲剧,原来是忘记了保存了。汗!
/** * 保存亮度设置状态 */
public static void saveBrightness(ContentResolver resolver, int brightness) {
Uri uri = android.provider.Settings.System
.getUriFor("screen_brightness");
android.provider.Settings.System.putInt(resolver, "screen_brightness",
brightness);
// resolver.registerContentObserver(uri, true, myContentObserver);
resolver.notifyChange(uri, null);
}
/** * 判断是否开启了自动亮度调节 */
public static boolean isAutoBrightness(ContentResolver aContentResolver) {
boolean automicBrightness = false;
try {
automicBrightness = Settings.System.getInt(aContentResolver,
Settings.System.SCREEN_BRIGHTNESS_MODE) == Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC;
}
catch (SettingNotFoundException e)
{
e.printStackTrace();
}
return automicBrightness;
}
private void changeLight(int size) {
if (isAutoBrightness(this.getContentResolver())) {
stopAutoBrightness(this);
setBrightness(this, size);
} else {
setBrightness(this, size);
}
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
if (keyCode == KeyEvent.KEYCODE_BACK) {
this.finish();
}
return super.onKeyDown(keyCode, event);
}
// 两点触屏后之间的长度
private float beforeLenght;
private float afterLenght;
/*
* 通过多点触屏放大或缩小图像 beforeLenght用来保存前一时间两点之间的距离 afterLenght用来保存当前时间两点之间的距离
*/
public void scaleWithFinger(MotionEvent event) {
float moveX = event.getX(1) - event.getX(0);
float moveY = event.getY(1) - event.getY(0);
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
beforeLenght = (float) Math.sqrt((moveX * moveX) + (moveY * moveY));
break;
case MotionEvent.ACTION_MOVE:
// 得到两个点之间的长度
afterLenght = (float) Math.sqrt((moveX * moveX) + (moveY * moveY));
float gapLenght = afterLenght - beforeLenght;
if (gapLenght == 0) {
break;
}
// 如果当前时间两点距离大于前一时间两点距离,则传0,否则传1
if (gapLenght > 3) {
float size=zoomModel.getZoom();
zoomModel.setZoom(size + 0.2f);
zoomModel.commit();
} else if(gapLenght < 3){
float size=zoomModel.getZoom();
if(size>1){
zoomModel.setZoom(size - 0.2f);
zoomModel.commit();
}
}
beforeLenght = afterLenght;
break;
}
}
/*// 这里来监听屏幕触控时间
@Override
public boolean onTouchEvent(MotionEvent event) {
* 判定用户是否触摸到了图片 如果是单点触摸则调用控制图片移动的方法 如果是2点触控则调用控制图片大小的方法
if (event.getPointerCount() == 2) {
scaleWithFinger(event);
}
return true;
}*/
}