当前位置:  编程技术>移动开发
本页文章导读:
    ▪【2013.07.17】自定义照相机对焦框等        【2013.07.17】自定义相机对焦框等 1. 好开心,自定义相机的对焦框出来了,虽然感觉有点蛋筒。之前也想用画图画的 ,可是因为蛋筒的数据传递问题抛弃了自定义SurfaceView,在Acivity中不能over.........
    ▪ 权限管理二        权限管理2   content://sms/inbox 收件箱 content://sms/sent 已发送 content://sms/draft 草稿 content://sms/outbox 发件箱 content://sms/failed 发送失败 content://sms/queued 待发送列表  .........
    ▪ 明白apk缓存       清楚apk缓存   *创建缓存文件加权限<uses-permission android:name="android.permission.ACCESS_CACHE_FILESYSTEM" />*/ File file = new File(this.getCacheDir(), "temp.txt"); try { .........

[1]【2013.07.17】自定义照相机对焦框等
    来源: 互联网  发布时间: 2014-02-18
【2013.07.17】自定义相机对焦框等

1.

好开心,自定义相机的对焦框出来了,虽然感觉有点蛋筒。之前也想用画图画的 ,可是因为蛋筒的数据传递问题抛弃了自定义SurfaceView,在Acivity中不能override onDraw方法,暂时不知道可行性。

 

所以采取的方式是,在相机预览的界面的点击位置显示一个对焦框的图片。这个图片位置的设定,没有直接的通过中心点坐标设置的方法,只能绕道,获得触摸点坐标后,设置图片的Margin。

 

ViewGroup.MarginLayoutParams 中有setMargins(int left, int top, int right, int bottom)方法

 

可以设置控件在界面上的上下左右margin。

 

我要动态显示的ImageView在一个LinearLayout中的FrameLayout中,所以给ImageView设置Parameters的时候用到

FrameLayout.LayoutParams

 

关键的代码

	/**
	 * @描述 自动对焦
	 * */
	AutoFocusCallback autoFocus = new AutoFocusCallback() {
		

		@Override
		public void onAutoFocus(boolean success, Camera camera) {

			if (success) {
				ViewGroup.MarginLayoutParams margin = new ViewGroup.MarginLayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
				margin.setMargins((int)(x-46.5), (int)(y-46.5), 0, 0);
				FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(
						margin);
				focus.setLayoutParams(params);
				System.out.println(focus.getLayoutParams().getClass());
				focus.setVisibility(ImageView.VISIBLE);
				/*
				 * 2秒后,自动对焦框消失
				 * */ 
				Handler timeHandler = new Handler();
				timeHandler.post(new Runnable() {

					@Override
					public void run() {
						try {
							Thread.sleep(2000);
							if (0 == focus.getVisibility()) {
								focus.setVisibility(ImageView.GONE);
							}
						} catch (InterruptedException e) {
							e.printStackTrace();
						}

					}
				});
			}
		}

	};

 

 

2. 拍完照后,在当前界面有一个ScrollView对已经拍摄的照片的缩略图的展示,怎样让那个ScrollView每次滚动到当前拍摄的界面呢。当然用到ScrollView的smoothScrollTo(int x, int y)方法,把它放到一个Runnable中去执行。

每个ImageView都有自己的高度,记录ImageView的个数,x=0,y=ImageView的高度×ImageView的个数。

感谢eoe某用户 

 

关键代码

	Handler smoothHandler = new Handler();
				smoothHandler.post(new Runnable() {

					@Override
					public void run() {
						int offset = iv.getMeasuredHeight()
								* photoPromts.length;
						if (offset < 0) {
							offset = 0;
						}
						scrollView.smoothScrollTo(0, offset);
					}
				});

 

 

3.在ScrollView中有一个LinearLayout,在这个LinearLayout中才是多个ImageView,怎样给这些ImageView设置监听,能够在点击他们时可以预览大图呢。直接给它setOnclickListener就可以了,只不过我这里的ImageView是final类型,会报

The final local variable iv cannot be assigned, since it is defined in an enclosing type 编译错。

就再定义一个ImageView去代表它


    
[2] 权限管理二
    来源: 互联网  发布时间: 2014-02-18
权限管理2

 

content://sms/inbox        收件箱
content://sms/sent        已发送
content://sms/draft        草稿
content://sms/outbox        发件箱
content://sms/failed        发送失败
content://sms/queued        待发送列表

  

 

Location
	android.permission.ACCESS_COARSE_LOCATION
		TelephonyManager.getCellLocation
		GsmCellLocation.getCid
		GsmCellLocation.getLac
		GsmCellLocation.getPsc
		CdmaCellLocation.getBaseStationLatitude
		CdmaCellLocation.getBaseStationLongitude
	android.permission.ACCESS_FINE_LOCATION
		LocationManager.requestLocationUpdates()
		LocationManager.getLastKnownLocation()
		Location.getLatitude()
		Location.getLongitude()
	android.permission.ACCESS_LOCATION_EXTRA_COMMANDS

Bookmarks
	com.android.browser.permission.READ_HISTORY_BOOKMARKS
		Browser.BOOKMARKS_URI
		Browser.SEARCHES_URI
		content://browser/bookmarks
		content://browser/searches
		Browser.getAllBookmarks()
		Browser.getAllVisitedUrls()
		Browser.getVisitedHistory()
		Browser.getVisitedHistoryByOrder
Contacts
	android.permission.READ_CONTACTS
		Contacts.CONTENT_URI
		Contacts$People
		content://contacts
		ContactsContract.AUTHORITY_URI
		content://com.android.contacts
		CallLog.CONTENT_URI
		CallLog.Calls.CONTENT_URI
		content://call_log/calls
	android.permission.WRITE_CONTACTS
		Contacts.CONTENT_URI
		Contacts$People
		content://contacts
		ContactsContract.AUTHORITY_URI
		content://com.android.contacts
Calendar
	android.permission.WRITE_CALENDAR
		Calendar.CONTENT_URI
		content://com.android.calendar
	android.permission.READ_CALENDAR
		Calendar.CONTENT_URI
		content://com.android.calendar
Phone
	android.permission.CALL_PHONE
		Intent.ACTION_CALL
		android.intent.action.CALL
	android.permission.PROCESS_OUTGOING_CALLS
		android.intent.action.NEW_OUTGOING_CALL
		EXTRA_INCOMING_NUMBER
	android.permission.READ_PHONE_STATE
		android.intent.action.PHONE_STATE
		EXTRA_INCOMING_NUMBER
		EXTRA_STATE
		TelephonyManager.getLine1Number()
		TelephonyManager.listen()
SMS
	android.permission.READ_SMS
		content://sms/
		content://mms/
		content://mms-sms/
	android.permission.RECEIVE_SMS
	android.permission.SEND_SMS
		SmsManager.sendTextMessage
		SmsManager.sendMultipartTextMessage
		SmsManager.sendDataMessage
	android.permission.WRITE_SMS
		content://sms/
		content://mms/
		content://mms-sms/
	android.permission.RECEIVE_MMS
	android.permission.RECEIVE_WAP_PUSH
Dangerous OPS
	android.permission.MOUNT_FORMAT_FILESYSTEMS
		IMountService.formatVolume()
	android.permission.MOUNT_UNMOUNT_FILESYSTEMS
	android.permission.KILL_BACKGROUND_PROCESSES
		ActivityManager.killBackgroundProcesses
		ActivityManagerNative.getDefault().killBackgroundProcesses()
	android.permission.RESTART_PACKAGES
		ActivityManager.restartPackage()
	android.permission.REORDER_TASKS
		ActivityManagerNative.getDefault().moveTaskToFront()
		ActivityManagerNative.getDefault().moveTaskToBack()
		ActivityManagerNative.getDefault().moveTaskBackwards()
	android.permission.RECEIVE_BOOT_COMPLETED
Camera
	android.permission.CAMERA
		MediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA)
		Camera.takePicture()
	android.permission.RECORD_AUDIO
		MediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC)
Settings
	android.permission.WRITE_APN_SETTINGS
		content://telephony/carriers/preferapn
		content://telephony/carriers

 


    
[3] 明白apk缓存
    来源: 互联网  发布时间: 2014-02-18
清楚apk缓存

 

*创建缓存文件加权限<uses-permission android:name="android.permission.ACCESS_CACHE_FILESYSTEM" />*/
       File file = new File(this.getCacheDir(), "temp.txt");                  
        try {                     
            file.createNewFile();                     
            FileWriter fw = new FileWriter(file);                     
            BufferedWriter bw = new BufferedWriter(fw);                     
            bw.write("creat cache file");                     
            bw.newLine();                     
            bw.close();               
        } 
        catch (IOException e) 
        {                     
            System.out.println(e.getMessage());           
        }   
 
 
/*删除cache文件*/
        File[] files = getCacheDir().listFiles();
        for (File f : files)
        {
              f.delete();
        }

 

/* 
     * 文 件 名:  DataCleanManager.java 
     * 描    述:  主要功能有清除内/外缓存,清除数据库,清除sharedPreference,清除files和清除自定义目录 
     */  
    package com.archermind.DataClean;  
       
    import java.io.File;  
       
    import android.content.Context;  
    import android.os.Environment;  
       
    /** 
     * 本应用数据清除管理器 
     */  
    public class DataCleanManager {  
        /** 
         * 清除本应用内部缓存(/data/data/com.xxx.xxx/cache) 
         *  
         * @param context 
         */  
        public static void cleanInternalCache(Context context) {  
            deleteFilesByDirectory(context.getCacheDir());  
        }  
       
        /** 
         * 清除本应用所有数据库(/data/data/com.xxx.xxx/databases) 
         *  
         * @param context 
         */  
        public static void cleanDatabases(Context context) {  
            deleteFilesByDirectory(new File("/data/data/"  
                    + context.getPackageName() + "/databases"));  
        }  
       
        /** 
         * 清除本应用SharedPreference(/data/data/com.xxx.xxx/shared_prefs) 
         *  
         * @param context 
         */  
        public static void cleanSharedPreference(Context context) {  
            deleteFilesByDirectory(new File("/data/data/"  
                    + context.getPackageName() + "/shared_prefs"));  
        }  
       
        /** 
         * 按名字清除本应用数据库 
         *  
         * @param context 
         * @param dbName 
         */  
        public static void cleanDatabaseByName(Context context, String dbName) {  
            context.deleteDatabase(dbName);  
        }  
       
        /** 
         * 清除/data/data/com.xxx.xxx/files下的内容 
         *  
         * @param context 
         */  
        public static void cleanFiles(Context context) {  
            deleteFilesByDirectory(context.getFilesDir());  
        }  
       
        /** 
         * 清除外部cache下的内容(/mnt/sdcard/android/data/com.xxx.xxx/cache) 
         *  
         * @param context 
         */  
        public static void cleanExternalCache(Context context) {  
            if (Environment.getExternalStorageState().equals(  
                    Environment.MEDIA_MOUNTED)) {  
                deleteFilesByDirectory(context.getExternalCacheDir());  
            }  
        }  
       
        /** 
         * 清除自定义路径下的文件,使用需小心,请不要误删。而且只支持目录下的文件删除 
         *  
         * @param filePath 
         */  
        public static void cleanCustomCache(String filePath) {  
            deleteFilesByDirectory(new File(filePath));  
        }  
       
        /** 
         * 清除本应用所有的数据 
         *  
         * @param context 
         * @param filepath 
         */  
        public static void cleanApplicationData(Context context, String... filepath) {  
            cleanInternalCache(context);  
            cleanExternalCache(context);  
            cleanDatabases(context);  
            cleanSharedPreference(context);  
            cleanFiles(context);  
            for (String filePath : filepath) {  
                cleanCustomCache(filePath);  
            }  
        }  
       
        /** 
         * 删除方法 这里只会删除某个文件夹下的文件,如果传入的directory是个文件,将不做处理 
         *  
         * @param directory 
         */  
        private static void deleteFilesByDirectory(File directory) {  
            if (directory != null && directory.exists() && directory.isDirectory()) {  
                for (File item : directory.listFiles()) {  
                    item.delete();  
                }  
            }  
        }  
    }  

 

 


    
最新技术文章:
▪Android开发之登录验证实例教程
▪Android开发之注册登录方法示例
▪Android获取手机SIM卡运营商信息的方法
▪Android实现将已发送的短信写入短信数据库的...
▪Android发送短信功能代码
▪Android根据电话号码获得联系人头像实例代码
▪Android中GPS定位的用法实例
▪Android实现退出时关闭所有Activity的方法
▪Android实现文件的分割和组装
▪Android录音应用实例教程
▪Android双击返回键退出程序的实现方法
▪Android实现侦听电池状态显示、电量及充电动...
▪Android获取当前已连接的wifi信号强度的方法
▪Android实现动态显示或隐藏密码输入框的内容
▪根据USER-AGENT判断手机类型并跳转到相应的app...
▪Android Touch事件分发过程详解
▪Android中实现为TextView添加多个可点击的文本
▪Android程序设计之AIDL实例详解
php开源软件 iis7站长之家
▪Android按钮单击事件的四种常用写法总结
▪Android消息处理机制Looper和Handler详解
▪Android实现Back功能代码片段总结
▪Android实用的代码片段 常用代码总结
▪Android实现弹出键盘的方法
▪Android中通过view方式获取当前Activity的屏幕截...
▪Android提高之自定义Menu(TabMenu)实现方法
▪Android提高之多方向抽屉实现方法
▪Android提高之MediaPlayer播放网络音频的实现方法...
▪Android提高之MediaPlayer播放网络视频的实现方法...
▪Android提高之手游转电视游戏的模拟操控
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3