当前位置:  编程技术>移动开发
本页文章导读:
    ▪传媒信息查询        媒体信息查询 今天写了一个查询图片信息的方法,才知道android中的所有媒体信息都被android保存到数据库里了。android系统每次加载SDCARD的时候都会扫描SDCARD把sdcard中的多媒体,文件信息等.........
    ▪ 位与加密形式的实现        位与加密方式的实现 位与加密方式的速度非常快。若能保证其私有密钥的安全性,则位与加密的安全性很高,要破译几乎是不可能的。 但是位与加密的缺陷是灵活性较差,对私有密钥的管理是.........
    ▪ 可旋转器皿       可旋转容器 在个网上找到一个很好用的 RotateLayout 可以在实现各个角度的旋转,也可以用来模拟横屏,或模拟竖屏等出处:http://stackoverflow.com/questions/8047422/is-there-any-way-to-rotate-a-button-withou.........

[1]传媒信息查询
    来源: 互联网  发布时间: 2014-02-18
媒体信息查询
今天写了一个查询图片信息的方法,才知道android中的所有媒体信息都被android保存到数据库里了。
android系统每次加载SDCARD的时候都会扫描SDCARD把sdcard中的多媒体,文件信息等等信息保存在数据库中。
我们先看一下数据库文件保存的目录 /data/data/com.android.providers.media/databases,在这个目录里有一个数据库文件
打开数据库,就可以看到android按着不同的数据类型给我们分成了不同的表,有image、video、auto_meta等等。
android为我们提供了很好的方法查询数据库:
		ContentResolver myResolver=this.context.getContentResolver();
		Cursor  cursor=myResolver.query(uri, projection, selection, selectionArgs, sortOrder);
		示例代码:
			/**
	 * 根据文件名查看图像信息,返回查询结果,包括文件路径、大小、文件名、类型、标题(文件名无扩展名)、父文件名
	 * @param display_name 文件名 例:pic.png
	 * @return 如果查询结果为空则返回null,否则返回一个ArrayList<Map<String,String>>类型数据,Map键名依次为date、size、display_name、mime_type、title、bucket_display,也可以直接使用常量ConstantFactory.ImageAbout.DATE等。
	 *
	 */
	public ArrayList<Map<String,String>> getImageInformationForDisplayName(String display_name){
		ContentResolver myResolver=this.context.getContentResolver();
		Cursor  cursor=myResolver.query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, null, "_display_name=?", new String[]{display_name}, null);
		if(cursor.getCount()==0){
			return null;
		}
		cursor.moveToFirst();
		ArrayList<Map<String,String>> list=new ArrayList<Map<String,String>>();
		Map<String, String> map=resolutionCursor(cursor);
		for(int i=0;i<cursor.getCount();i++){
			map=resolutionCursor(cursor);
			list.add(map);
			cursor.moveToNext();
		}
		return list;
	}


/*
* 解析cursor获得其中数据
*/
	private Map<String, String> resolutionCursor(Cursor cursor){
			Map<String, String> map =new HashMap<String, String>();
//			cursor.moveToPosition(23);
//			this.string=cursor.getColumnNames();
//			for(int i=0;i<string.length;i++){
//				System.out.println(string[i]);
//				//System.out.println(cursor.getColumnIndex(string[i]));
//				System.out.println(""+cursor.getString(cursor.getColumnIndex(string[i])));
//			}
//
//		System.out.println(""+cursor.getString(cursor.getColumnIndex("_data"))+"\n"+ cursor.getString(cursor.getColumnIndex("_size"))
//				+"\n"+cursor.getString(cursor.getColumnIndex("_display_name"))+"\n"+cursor.getString(cursor.getColumnIndex("mime_type"))
//				+"\n"+cursor.getString(cursor.getColumnIndex("title"))+"\n"+cursor.getString(cursor.getColumnIndex("bucket_display_name")));
 
			//具体的文件地址/sdcard/tencent/MobileQQ/head/511079108.png
			map.put(ConstantFactory.ImageAbout.DATA, cursor.getString(cursor.getColumnIndex("_data")));
			//文件大小
			map.put(ConstantFactory.ImageAbout.SIZE, cursor.getString(cursor.getColumnIndex("_size")));
			//文件名称(包含扩展名)
			map.put(ConstantFactory.ImageAbout.DISPLAY_NAME, cursor.getString(cursor.getColumnIndex("_display_name")));
			//文件类型
			map.put(ConstantFactory.ImageAbout.MIME_TYPE, cursor.getString(cursor.getColumnIndex("mime_type")));
			//文件标题(文件名没有标题)
			map.put(ConstantFactory.ImageAbout.TITLE, cursor.getString(cursor.getColumnIndex("title")));
			//父文件夹名
			map.put(ConstantFactory.ImageAbout.BUCKET_DISPLAY, cursor.getString(cursor.getColumnIndex("bucket_display_name")));
			return map;
	}




1、SD卡中的所有缩略图可以通过MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI来得到

2、MediaStore.Images.Media.EXTERNAL_CONTENT_URI来得到原始图片

    
[2] 位与加密形式的实现
    来源: 互联网  发布时间: 2014-02-18
位与加密方式的实现

位与加密方式的速度非常快。若能保证其私有密钥的安全性,则位与加密的安全性很高,要破译几乎是不可能的。

但是位与加密的缺陷是灵活性较差,对私有密钥的管理是个头疼的问题。

在只需要简单粗暴的加密方式的环境下,这是个不错的选择。

 

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Arrays;

public class Encryptor {

    public static byte[] encrypt(byte[] content, byte[] key) {
        if (key.length == 0)
            throw new IllegalArgumentException("key can not be empty!");
        byte[] copy = Arrays.copyOf(content, content.length);
        encrypt1(copy, key, 0);
        return copy;
    }

    private static void encrypt1(byte[] content, byte[] key, int start) {
        if (start == content.length)
            return;// 递归结束条件
        int end = start + key.length;
        if (end >= content.length)
            end = content.length;
        for (int i = start; i < end; i++) {
            content[i] ^= key[i - start];
        }
        encrypt1(content, key, end);
    }

    public static byte[] decrypt(byte[] content, byte[] key) {
        // 异或的解密等于加密
        return encrypt(content, key);
    }

    public static void encryptFile(File file, File output, byte[] privateKey)
            throws IOException {
        if(output.getParentFile()!=null)
            output.getParentFile().mkdirs();
        FileInputStream fis = new FileInputStream(file);
        FileOutputStream fos = new FileOutputStream(output);
        byte[] buffer = new byte[8192];
        int realSize = -1;
        try {
            while ((realSize = fis.read(buffer)) != -1) {
                byte[] encrypted = encrypt(buffer, privateKey);
                fos.write(encrypted,0,realSize);
            }
        }
        finally {
            fos.close();
            fis.close();
        }
    }

    public static void decryptFile(File file, File output, byte[] privateKey)
            throws IOException {
        encryptFile(file, output, privateKey);
    }

    public static void main(String[] args) throws Exception {
        byte[] key = "kiss".getBytes();
        byte[] content = "dddefr12345adkfjsadfjladskfj".getBytes();
        byte[] test = encrypt(content, key);
        System.out.println(new String(test));
        test = decrypt(test, key);
        System.out.println(new String(test));
//        encryptFile(new File("test"), new File("test2"), key);
//        decryptFile(new File("test2"), new File("test3"), key);
    }
}

 

小弟潜水好久~出来透个气。呼呼

 


    
[3] 可旋转器皿
    来源: 互联网  发布时间: 2014-02-18
可旋转容器
在个网上找到一个很好用的 RotateLayout 可以在实现各个角度的旋转,也可以用来模拟横屏,或模拟竖屏等
出处:
http://stackoverflow.com/questions/8047422/is-there-any-way-to-rotate-a-button-without-using-animation-in-android-2-1

    
最新技术文章:
▪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实例详解
▪Android显式启动与隐式启动Activity的区别介绍
▪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