- 博客(0)
- 资源 (13)
- 收藏
- 关注
音乐播放器需求规格说明书_v1.0
1引言
1.1编写目的
本说明书的编写目的是为了帮助安卓越学员更好的完成第三阶段的项目任务,说明书包括系统的业务需求、功能需求、运行环境、数据需求、界面需求、外部接口等以及非功能性需求及其它约束,供用户、产品/项目管理人员作为系统验收的依据;供系统设计人员、实现人员、测试人员作为设计和开发、测试的依据。
1.2项目概述
项目名称: 音乐播放器
项目的用户:安卓越学员
项目内容: 提供音乐播放器的建设解决方案。
2需求概述
2.1系统目标
系统的总体定位应是为安卓越学员提供项目分析及解决思路,帮助学员理清思路、巩固技能点,顺利完成本系统的综合应用。
2.2系统规模
系统应包括一套基于本地音乐操作模块,网络音乐操作模块。从而实现系统从android平台到服务器端实现良好的交互能力。
2014-10-19
初识Android
在Activity生命周期之前先要说一下Activity栈,Activity栈保存了所有正在运行且没有终止的所有的Activity,Activity也遵循“先进后出”的原则
2014-10-19
最新JAVA编程题全集
题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? //这是一个菲波拉契数列问题 public class lianxi01 { public static void main(String[] args) { System.out.println("第1个月的兔子对数: 1"); System.out.println("第2个月的兔子对数: 1"); int f1 = 1, f2 = 1, f, M=24; for(int i=3; i<=M; i++) { f = f2; f2 = f1 + f2; f1 = f; System.out.println("第" + i +"个月的兔子对数: "+f2); } } } 【程序2】 题目:判断101-200之间有多少个素数,并输出所有素数。 程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除, 则表明此数不是素数,反之是素数。 public class lianxi02 { public static void main(String[] args) { int count = 0; for(int i=101; i<200; i+=2) { boolean b = false; for(int j=2; j<=Math.sqrt(i); j++) { if(i % j == 0) { b = false; break; } else { b = true; } } if(b == true) {count ++;System.out.println(i );} } System.out.println( "素数个数是: " + count); } } 【程序3】 题目:打印出所有的 "水仙花数 ",所谓 "水仙花数 "是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个 "水仙花数 ",因为153=1的三次方+5的三次方+3的三次方。 public class lianxi03 { public static void main(String[] args) { int b1, b2, b3;
for(int m=101; m<1000; m++) { b3 = m / 100; b2 = m % 100 / 10; b1 = m % 10; if((b3*b3*b3 + b2*b2*b2 + b1*b1*b1) == m) { System.out.println(m+"是一个水仙花数"); } } } } 【程序4】 题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。 程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成: (1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。 (2)如果n <> k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,重复执行第一步。 (3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。 import java.util.*; public class lianxi04{ public static void main(String[] args) { Scanner s = new Scanner(System.in); System.out.print( "请键入一个正整数: "); int n = s.nextInt(); int k=2; System.out.print(n + "=" ); while(k <= n) { if(k == n) {System.out.println(n);break;} else if( n % k == 0) {System.out.print(k + "*");n = n / k; } else k++; } } } 【程序5】 题目:利用条件运算符的嵌套来完成此题:学习成绩> =90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。 import java.util.*; public class lianxi05 { public static void main(String[] args) { int x; char grade; Scanner s = new Scanner(System.in); System.out.print( "请输入一个成绩: "); x = s.nextInt(); grade = x >= 90 ? 'A' : x >= 60 ? 'B'
2014-10-19
Java之IO流学习总结
Java IO流学习总结
Java流操作有关的类或接口:
Java流类图结构:
流的概念和作用
流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作。
IO流的分类
根据处理数据类型的不同分为:字符流和字节流
根据数据流向不同分为:输入流和输出流
字符流和字节流
字符流的由来: 因为数据编码的不同,而有了对字符进行高效操作的流对象。本质其实就是基于字节流读取时,去查了指定的码表。 字节流和字符流的区别:
读写单位不同:字节流以字节(8bit)为单位,字符流以字符为单位,根据码表映射字符,一次可能读多个字节。
处理对象不同:字节流能处理所有类型的数据(如图片、avi等),而字符流只能处理字符类型的数据。
结论:只要是处理纯文本数据,就优先考虑使用字符流。 除此之外都使用字节流。
输入流和输出流
对输入流只能进行读操作,对输出流只能进行写操作,程序中需要根据待传输数据的不同特性而使用不同的流。
Java IO流对象
1.输入字节流InputStreamIO 中输入字节流的继承图可见上图,可以看出:
InputStream 是所有的输入字节流的父类,它是一个抽象类。
ByteArrayInputStream、StringBufferInputStream、FileInputStream 是三种基本的介质流,它们分别从Byte 数组、StringBuffer、和本地文件中读取数据。PipedInputStream 是从与其它线程共用的管道中读取数据,与Piped 相关的知识后续单独介绍。
ObjectInputStream 和所有FilterInputStream 的子类都是装饰流(装饰器模式的主角)。
2.输出字节流OutputStream
IO 中输出字节流的继承图可见上图,可以看出:
OutputStream 是所有的输出字节流的父类,它是一个抽象类。
ByteArrayOutputStream、FileOutputStream 是两种基本的介质流,它们分别向Byte 数组、和本地文件中写入数据。PipedOutputStream 是向与其它线程共用的管道中写入数据,
ObjectOutputStream 和所有FilterOutputStream 的子类都是装饰流。
3.字节流的输入与输出的对应
图中蓝色的为主要的对应部分,红色的部分就是不对应部分。紫色的虚线部分代表这些流一般要搭配使用。从上面的图中可以看出Java IO 中的字节流是极其对称的。“存在及合理”我们看看这些字节流中不太对称的几个类吧!
LineNumberInputStream 主要完成从流中读取数据时,会得到相应的行号,至于什么时候分行、在哪里分行是由改类主动确定的,并不是在原始中有这样一个行号。在输出部分没有对应的部分,我们完全可以自己建立一个LineNumberOutputStream,在最初写入时会有一个基准的行号,以后每次遇到换行时会在下一行添加一个行号,看起来也是可以的。好像更不入流了。
PushbackInputStream 的功能是查看最后一个字节,不满意就放入缓冲区。主要用在编译器的语法、词法分析部分。输出部分的BufferedOutputStream 几乎实现相近的功能。
StringBufferInputStream 已经被Deprecated,本身就不应该出现在InputStream 部分,主要因为String 应该属于字符流的范围。已经被废弃了,当然输出部分也没有必要需要它了!还允许它存在只是为了保持版本的向下兼容而已。
SequenceInputStream 可以认为是一个工具类,将两个或者多个输入流当成一个输入流依次读取。完全可以从IO 包中去除,还完全不影响IO 包的结构,却让其更“纯洁”――纯洁的Decorator 模式。
PrintStream 也可以认为是一个辅助工具。主要可以向其他输出流,或者FileInputStream 写入数据,本身内部实现还是带缓冲的。本质上是对其它流的综合运用的一个工具而已。一样可以踢出IO 包!System.out 和System.out 就是PrintStream 的实例!
4.字符输入流Reader
在上面的继承关系图中可以看出:
Reader 是所有的输入字符流的父类,它是一个抽象类。
CharReader、StringReader 是两种基本的介质流,它们分别将Char 数组、String中读取数据。PipedReader 是从与其它线程共用的管道中读取数据。
BufferedReader 很明显就是一个装饰器,它和其子类负责装饰其它Reader 对象。
FilterReader 是所有自定义具体装饰流的父类,其子类PushbackReader 对Reader 对象进行装饰,会增加一个行号。
InputStreamReader 是一个连接字节流和字符流的桥梁,它将字节流转变为字符流。FileReader 可以说是一个达到此功能、常用的工具类,在其源代码中明显使用了将FileInputStream 转变为Reader 的方法。我们可以从这个类中得到一定的技巧。Reader 中各个类的用途和使用方法基本和InputStream 中的类使用一致。后面会有Reader 与InputStream 的对应关系。
5.字符输出流Writer
在上面的关系图中可以看出:
Writer 是所有的输出字符流的父类,它是一个抽象类。
CharArrayWriter、StringWriter 是两种基本的介质流,它们分别向Char 数组、String 中写入数据。PipedWriter 是向与其它线程共用的管道中写入数据,
BufferedWriter 是一个装饰器为Writer 提供缓冲功能。
PrintWriter 和PrintStream 极其类似,功能和使用也非常相似。
OutputStreamWriter 是OutputStream 到Writer 转换的桥梁,它的子类FileWriter 其实就是一个实现此功能的具体类(具体可以研究一SourceCode)。功能和使用和OutputStream 极其类似,后面会有它们的对应图。
6.字符流的输入与输出的对应
7.字符流与字节流转换
转换流的特点:
其是字符流和字节流之间的桥梁
可对读取到的字节数据经过指定编码转换成字符
可对读取到的字符数据经过指定编码转换成字节
何时使用转换流?
当字节和字符之间有转换动作时;
流操作的数据需要编码或解码时。
具体的对象体现:
InputStreamReader:字节到字符的桥梁
OutputStreamWriter:字符到字节的桥梁
这两个流对象是字符体系中的成员,它们有转换作用,本身又是字符流,所以在构造的时候需要传入字节流对象进来。
8.File类
File类是对文件系统中文件以及文件夹进行封装的对象,可以通过对象的思想来操作文件和文件夹。 File类保存文件或目录的各种元数据信息,包括文件名、文件长度、最后修改时间、是否可读、获取当前文件的路径名,判断指定文件是否存在、获得当前目录中的文件列表,创建、删除文件和目录等方法。
9.RandomAccessFile类
该对象并不是流体系中的一员,其封装了字节流,同时还封装了一个缓冲区(字符数组),通过内部的指针来操作字符数组中的数据。 该对象特点:
该对象只能操作文件,所以构造函数接收两种类型的参数:a.字符串文件路径;b.File对象。
该对象既可以对文件进行读操作,也能进行写操作,在进行对象实例化时可指定操作模式(r,rw)
注意:该对象在实例化时,如果要操作的文件不存在,会自动创建;如果文件存在,写数据未指定位置,会从头开始写,即覆盖原有的内容。 可以用于多线程下载或多个线程同时写数据到文件。
2014-10-19
dex2jar-0.0.9.15
Android反编译工具:Apktool,支持Linux 、Mac os X,Windows下工作(win下要多一步),这里主要讲win下的操作
安装步骤如下:
1.首先安装需要JAVA环境,先下载JDK/JRE,点击下载,已经有JAVA环境的可跳过此步
2.到code.google上下载apktool.jar以及相关文件:http://code.google.com/p/android-apktool/downloads/list
点击下载apktool-1.0.0.tar.bz2 和apktool-install-windows-2.1_r01-1.zip
3.复制apktool.jar 到 C:\Windows文件夹下
解压apktool-install-windows.zip到任意文件夹
4.点击开始菜单,运行,输入CMD回车,用cd命令转到刚刚解压apktool-install-windows所在的文件夹,输入apktool,出现一些命令说明即成功安装。
Apktool 命令
apktool d geek.apk test 反编译 geek.apk到文件夹test
apktool b geek 从文件夹geek重建APK,输出到ABC\dist\out.apk
反编译成java源文件工具的使用dex2jar.bat和jd-gui工具一起使用
工具:dex2jar,下载地址: http://code.google.com/p/dex2jar/ 。这个工具不能直接翻译成java文件,但是可以把dex文件转换成jar文件。
然后可以通过 jd-gui工具把jar文件反编译成Java源文件,jd-gui下载地址: http://java.decompiler.free.fr/jd-gui/downloads/jd-gui-0.3.3.windows.zip 。
1. 把 apk 文件改名为 .zip ,然后解压缩 , 得到其中的 classes.dex 文件,它就是 java 文件编译后再通过 dx 工具打包成的 , 所以现在我们就用上述提到的 2 个工具来逆方向导出 java 源文件
2. 把 classes.dex 拷贝到 dex2jar.bat 所在目录。
在命令行模式下定位到 dex2jar.bat 所在目录,运行 dex2jar.bat classes.dex ,生成 classes.dex.dex2jar.jar
3. 运行 JD-GUI 工具
打开上面的 jar 文件,即可看到源代码
2014-10-19
ColorPix——颜色选择器
“颜色选择器”概述
颜色选择器是帮助用户简单、精确提取屏幕像素颜色的实用工具。颜色选择器创建了一个放大镜窗口,在其中显示放大了的部分屏幕,以增加可视性。您需要拖动颜色选择工具到屏幕上以选择屏幕区域,然后释放鼠标按钮。您可以在放大镜中使用鼠标点选或者方向键选择屏幕颜色。
使用颜色选择器可以:
◆ 选择屏幕区域
◆ 更改放大比例
◆ 从放大镜中选择颜色
◆ 更改颜色模型
◆ 复制颜色值到剪贴板
“颜色选择器”的快捷键
◆ + 增加放大倍数
◆ - 减少放大倍数
◆ F5 复位放大镜
◆ Ctrl + C 复制到剪贴板
◆ Ctrl + F 清空放大镜
2014-10-19
ApkIDE——安卓反编译
软件说明:
小米人APK改之理是一款可视化的用于修改安卓Apk程序文件的工具,集成了ApkTool、Dex2jar、JD-GUI等Apk修改工具,集Apk反编译、Apk打包、Apk签名,支持语法高亮的代码编辑器,基于文件内容的关键字(支持单行代码或多行代码段)搜索、替换引擎,打造成可视的、一体化的APK修改工具,从而大大简化Apk修改过程中的繁琐操作,修改更轻松。
APK改之理特色:
1、可视化操作,全自动的反编译、编译、签名Apk。
2、以树目录管理全部反编译得到的Apk资源文件,方便操作。
3、内置代码编辑器,支持语法高亮显示,根据文件格式自动匹配相应语法;支持多文档同时编辑;也支持使用系统编辑器来编辑代码文件。
4、内置基于文件内容的关键字或多行代码段的搜索、替换引擎,一键搜索替换,搜索结果以标签的形式分门别类;允许在指定搜索范围(整个工程或选中的文件或文件夹内搜索),支持正则表达式搜索和替换。搜索功能是Apk修改的一个重要工具,从此你不必借助其它第三方搜索工具。
5、内置Google在线翻译引擎,支持实时翻译,支持所有Google支持的几十国语言对译,汉化更轻松。
6、自动识别图像资源,并提供该类资源的快捷替换功能,方便修改这类图片资源。
7、内嵌Unicode、AscII互转工具,以方便硬编码的文字(如汉字)的搜索和汉化类修改。
8、内置类似于系统cmd.exe的命令窗口,高手也可以手动直接输入各种命令来手动操作。
9、所有操作步骤、操作结果都以良好的阅读格式输出在日志窗口,方便查看修改的历史记录。
10、内置adb功能,包括使用adb向设备(或模拟器)安装、卸载修改后的apk进行测试,并嵌入adb log、ddms等功能监测修改apk的运行状况,以便于分析和查找错误。
11、支持多国语言界面,支持界面换肤。
注意事项:
1、双击 ApkIDE.exe启动程序(如果是Vista/Win7建议用用管理员权限运行,右键单击或在属性中设置)
2、如果启动不了,请先安装.net framework 2.0(或更高版本):
3、JDK建议使用1.6,不要用1.7。
4、本版集成:apktool 1.5.2;dex2jar 0.0.9.13; JD-GUI 0.3.5
5、APK签名用test.keystore信息:
路径:[Apk改之理安装目录]/test.keystore
keystore password:apkide-test
key alias:apkide
key password:apkide-test
validity(years):100
organization:apkide
更新日志:
APK改之理3.1.0.0版本更新内容:
1、增加对apktool2.x版本的支持(目前apktool2.x仍然是测试版本,此版要求JDK1.7或以上),同时保留对1.5.2版的支持,二者可以一键切换(菜单「工具」-「配置与选项」-「选项」-「ApkTool版本切换」)。
2、增加apk拖放操作功能,可以将apk文件拖到Apk改之理窗体上,即可自动捕捉并反编译。
3、代码编码器增加将选中的文字从“Unicode转换为AscII”或“从AscII 转换为Unicode”二个转换命令,转换结果将直接替换编辑器选中的文本。
4、修复部份系统环境下签名出现“java’ 不是内部或外部命令”的错误。
5、配置keystore文件时不再强制要求.keystore的文件。
6、修正一处文件监视上的问题,一些小功能的改善。
版本:2.4.2 alpha测试版 发布时间:2013.05.02
解决部份apk(如无Icon、无Features等特性的apk)反编译后出现错误的问题。
针对上网本小屏幕(屏幕分辨率高度600的)调整搜索面板中控件尺寸来显示全部。
同时为搜索、替换文本框增加一个扩展编辑器。
搜索结果面板中添加“全部关闭”功能,以便一键关闭所有搜索标签。
版本:2.4.1 alpha测试版 发布时间:2013.05.02
修复文件监控的问题,包括:(1)可能存在部份已被外部修改的文件不能即时通知用户重新加载的问题(2)多次使用搜索替换面板中“替换全部”功能时,会出现未处理的错误的问题
改了dex2jar实现方式(效果一样,不过更安全些))
版本:2.4 alpha测试版 发布时间:2013.04.14
增加keystore的签名方式,你可以使用自己的keystore来签名apk(keystore可以使用eclipse来生成,软件已默认提供了一个test.keystore);注:如果使用自己的keystore,请在设置窗口点“验证”按钮确保能显示为“验证成功”的方能使用,否则如果配置不正确编译成的apk是没有签名的(即apk中没有META-INF文件夹),且这个过程中不会有错误提示造成无法排查原因。PS:如果使用jdk1.7,请使用这种签名方式,否则可能签名不成功;同时因为keystore可以自己生成唯一数据,解决使用共享签名证书可能被如360拉黑报马的问题。
修复文件修改的监控问题,确保在必要时(已打开的文件在外部被修改时)通知用户重新加载它们。
修复查找对话框关闭后无法再打开(打开显示错误)的问题。
完善jdk路径的自动查找和配置(如果不会设置JDK,只要安装jdk的安装版后,通常都能自动查找到)。
版本:2.3 alpha测试版 发布时间:2013.04.09
增加对.samli、.xml的文件修改的监视功能,以便在使用了外部编辑器修改此类文件后能通知用户重新加载修改过的文件。
手动清理旧项目时改为线程方式,避免假死问题。
解决下拉列表的界面语言翻译问题。
小东和小西被改善、修复。
2014-10-19
dex2jar-0.0.9.13、jd-gui-0.3.5.windows
工具下载:需用到dex2jar和JD-GUI这2个工具
dex2jar下载地址:http://laichao.googlecode.com/files/dex2jar-0.0.7-SNAPSHOT.zip
JD-GUI下载地址:
windows版JD-GUI:http://laichao.googlecode.com/files/jdgui.zip
Linux版JD-GUI:http://laichao.googlecode.com/files/jd-gui-0.3.2.linux.i686.tar.gz
步骤:
1.首先找到Android软件安装包中的classes.dex
把.apk文件改名为.zip,然后解压缩,得到其中的classes.dex文件,它就是java文件编译再通过dx工具打包成的,所以现在我们就用上述提到的2个工具来逆方向导出java源文件
2.把classes.dex拷贝到dex2jar.bat所在目录。
在命令行模式下定位到dex2jar.bat所在目录,运行 dex2jar.bat classes.dex ,生成classes.dex.dex2jar.jar
3.运行JD-GUI工具(它是绿色无须安装的)
打开上面的jar文件,即可看到源代码
---------------------------------------------------------------------------------
二.反编译apk生成程序的源代码和图片、XML配置、语言资源等文件。
转载自:http://blog.sina.com.cn/s/blog_5752764e0100kv34.html
工具下载:
在http://code.google.com/p/android-apktool/下 载获得,apktool-1.0.0.tar.bz2和apktool-install-windows-2.1_r01-1.zip两个包都要下。
步骤:
1.解压缩下载的两个文件包,apktool-install-windows-2.1_r01-1.zip解压缩后得到的包里有aapt.exe 和apktool.bat.
2.打开命令窗口 (开始 > 运行,输入cmd,回车。)进入到apktool.bat的文件夹里。
输入:apktool d C:***.apk C:***文件夹
(命令行解释:apktool d 要反编译的文件 输出文件夹)
特别注意:你要反编译的文件一定要放在C盘的根目录里,
3.打开C:***文件夹 就可以得到我们学院的各种资源了。
2014-10-19
ApkDec-Release
在刚开始学习android时,看源码学习应该是不错的学习方法之一,但没有那么多开源项目可以去参考,于是就打起APK文件的算盘了,那么该如何进行APK文件的反编译呢?
只需要这一款集成软件
2014-10-19
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人