Android Gallery3D源码学习小结
篇一:http.//124.163219.201
Android自定义照相机实现(拍照、保存到SD卡,利用Bundle在Acitivity交换数据)
分类: 【Android多媒体开发系列】 【Android开发学习之路】 2013-05-14 21:36 12172人阅读 评论(14)
收藏 举报
ANDROID
Android自定义照相机实现
近期小巫在学校有一个创新项目,也不是最近,是一个拖了很久的项目,之前一直没有去搞,最近因为要中期检查,搞得我跟小组成员一阵忙活,其实开发一款照相机软件并不太难,下面就是通过自定义的方式来实现手机照相的功能。
创建一个项目:FingerTakePicture
首先来搞一下界面:
[html] 1. <FrameLayout xmlns:android="
2. xmlns:tools="
3. android:id="@+id/FrameLayout1"
4. android:layout_width="match_parent"
5. android:layout_height="match_parent" >
6. <!-- 显示预览图形 -->
7. <SurfaceView
8. android:id="@+id/surfaceView"
9. android:layout_width="match_parent"
10. android:layout_height="match_parent"
11. />
12. <!-- 相对布局,放置两个按钮 -->
13. <RelativeLayout
14. android:id="@+id/buttonLayout"
15. android:layout_width="wrap_content"
16. android:layout_height="wrap_content"
17. android:visibility="gone"
18. >
19. <!-- 拍照按钮 -->
20. <Button
21. android:id="@+id/takepicture"
22. android:layout_width="wrap_content"
23. android:layout_height="wrap_content"
24. android:layout_alignParentRight="true"
25. android:layout_alignParentBottom="true"
26. android:background="@drawable/btn_tabkepicture_selector"
27. android:onClick="btnOnclick"
28. />
29. <ImageView
30. android:id="@+id/scalePic"
31. android:layout_width="wrap_content"
32. android:layout_height="wrap_content"
33. android:layout_alignParentLeft="true"
34. android:layout_alignParentBottom="true"
35. android:layout_marginLeft="5dp"
36. android:background="@drawable/img_showpic_selector"
37. android:onClick="imageClick"
38. />
39. </RelativeLayout>
40. </FrameLayout>
界面效果(无法把预览给截屏下来滴):
权限设置少不了:
[html]
1. <manifest xmlns:android="
2. package="com.wwj.finger"
3. android:versionCode="1"
4. android:versionName="1.0" >
5.
6. <uses-sdk
7. android:minSdkVersion="4"
8. android:targetSdkVersion="15" />
9.
10. <uses-permission android:name="android.permission.CAMERA" />
11. <!-- 在SDCard中创建与删除文件权限 -->
12. <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYST
EMS" />
13. <!-- 往SDCard写入数据权限 -->
14. <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE
" />
15. <application
16. android:icon="@drawable/ic_launcher"
17. android:label="@string/app_name" 18. android:theme="@style/AppTheme" >
19. <activity
20. android:name=".MainActivity"
21. android:label="@string/title_activity_main"
22. >
23. <intent-filter>
24. <action android:name="android.intent.action.MAIN" /> 25.
26. <category android:name="android.intent.category.LAUNCHER" />
27. </intent-filter>
28. </activity>
29. <activity
30. android:name=".ShowPicActivity"
31. android:label="@string/app_name"
32. android:theme="@style/AppTheme"
33. android:configChanges="orientation|keyboardHidden"
34. ></activity>
35. </application>
36.
37. </manifest>
主Activity:
[java] copyprint?
1. package com.wwj.finger;
2.
3. import java.io.File;
4. import java.io.FileOutputStream;
5. import java.io.IOException;
6. import java.text.SimpleDateFormat;
7. import java.util.Date;
8.
9.
10. import android.app.Activity;http.//124.163219.201。
11. import android.content.Intent;
12. import android.graphics.PixelFormat;
13. import android.hardware.Camera;
14. import android.hardware.Camera.PictureCallback;
15. import android.os.Bundle;
16. import android.os.Environment;
17. import android.view.KeyEvent;
18. import android.view.MotionEvent;
19. import android.view.Surface;
20. import android.view.SurfaceHolder;
21. import android.view.SurfaceHolder.Callback;
22. import android.view.SurfaceView;
23. import android.view.View;
24. import android.view.ViewGroup;
25. import android.widget.Toast;
26.
27. /**
28. * Android手指拍照
29. *
30. * @author wwj
31. * @date 2013/4/29
32. */
33. public class MainActivity extends Activity {
34. private View layout;
35. private Camera camera;
36. private Camera.Parameters parameters = null;
37.
38. Bundle bundle = null; // 声明一个Bundle对象,用来存储数据 39.
40. @Override
RS编码和纠错算法
篇二:http.//124.163219.201
Data Matrix将有效信息(数字字母等)编码成0~255内的数字表示 (编码方式参考:)。为了及时发现数据传输时的错误,使用RS编解码来进行错误检测校验。RS码可以看成伽罗华域GF(2^m)上的元素,dm码的元素0~255正好对应伽罗华域GF(2^8)上的256个元素。通过编码时添加冗余信息,可以有效校验数据是否正确传输。
以下为文献概要:
1) 介绍如何生成GF(2^m)域,伽罗华域的加法运算为异或运算,乘法运算为指数相加后
mod(2^m)。
2) 实例分析如何编码及纠错。(实际上就是求解多项式方程组的过程,在实际工程算法中
运用到的钱氏搜索法(Chien Search),Berlekamp-Massey 算法都是为了快速求解方程组,从而纠错)。http.//124.163219.201。
3) 附录部分为GF(2^8)上的元素列表。
13.2 RS编码和纠错算法
13.2.1. GF(2)域
RS(Reed-Solomon)码在伽罗华域(Galois Field,GF)中运算的,因此在介绍RS码之前先简要介绍一下伽罗华域。
CD-ROM中的数据、地址、校验码等都可以看成是属于GF(2) = GF(2)中的元素或称符号。
8
GF(2)表示域中有256个元素,除0,1之外的254个元素由本原多项式P(x)生成。本原多
m
8
m
项式的特性是得到的余式等于0。CD-ROM用来构造GF(2)域的
8
是
(13-1)
而GF(2)域中的本原元素为 α = (0 0 0 0 0 0 1 0)
下面以一个较简单例子说明域的构造。
8
[例13.1] 构造GF(2)域的本原多项式
3
假定为
α定义为
3
= 0的根,即
α+α+
1 = 0
和 α = α+1
GF(2)中的元素可计算如下:
0 α α α α α α α α α ……
876543210
3
3
mod(α+α+1) = 0 mod(α+α+1) = α = 1 mod(α+α+1) = α mod(α+α+1) = α mod(α+α+1) = α+1 mod(α+α+1) = α+α mod(α+α+1) = α+α+1 mod(α+α+1) = α+1 mod(α+α+1) = α mod(α+α+1) = α
3
1
3
3
2
3
2
1
3
2
33
2
3
1
3
3
用二进制数表示域元素得到表13-01所示的对照表
表13-01 GF(2)域中与二进制代码对照表, 3
3
这样一来就建立了GF(2)域中的元素与3位二进制数之间的一一对应关系。用同样的方法
8
可建立GF(2)域中的256个元素与8位二进制数之间的一一对应关系。在纠错编码运算过
3
程中,加、减、乘和除的运算是在伽罗华域中进行。现仍以GF(2)域中运算为例:
加法例:α+α = 001+011 = 010 = α 减法例:与加法相同
10
3
乘法例:α·α = α= α
2
54(5+4)mod7
除法例:α/α = α α/α = α= α
(-2+7)3
5
-2
532
= α
取对数:log(α) = 5
这些运算的结果仍然在GF(2)域中。
13.2.2 RS的编码算法
3
5
5
RS的编码就是计算信息码符多项式
m
除以校验码生成多项式之后的余数。
在介绍之前需要说明一些符号。在GF(2)域中,符号(n,k)RS的含义如下:
m n k t
表示符号的大小,如m = 8表示符号由8位二进制数组成 表示码块长度, 表示码块中的信息长度 表示能够纠正的错误数目
K=n-k = 2t 表示校验码的符号数
例如,(28,24)RS码表示码块长度共28个符号,其中信息代码的长度为24,检验码有4个检验符号。在这个由28个符号组成的码块中,可以纠正在这个码块中出现的2个分散的或者2个连续的符号错误,但不能纠正3个或者3个以上的符号错误。
对一个信息码符多项式,RS校验码生成多项式的一般形式为
(13-2)
式中,m0是偏移量,通常取K0 = 0或K0 = 1,而(n-k)≥2t (t为要校正的错误符号数)。 下面用两个例子来说明RS码的编码原理。
[例13.2] 设在GF(2)域中的元素对应表如表13-01所示。假设(6,4)RS码中的4个信息
3http.//124.163219.201。
符号为m3、m2、m1和m0,信息码符多项式为
(13-3)
并假设RS校验码的2个符号为Q1和Q0,的剩余多项式为
这个多项式的阶次比
的阶次少一阶。
如果K0 = 1,t = 1,由式(13-2)导出的RS校验码生成多项式就为
= (13-4)
根据多项式的运算,由式(13-3)和式(13-4)可以得到 m3x+m2x+m1x+m0x+Q1x+Q0 = (x-α)(x-α)Q(x) 当用x = α和x = α代入上式时,得到下面的方程组,
2
5
4
3
2
2
经过整理可以得到用矩阵表示的(6,4)RS码的校验方程:
求解方程组就可得到校验符号:
在读出时的校正子可按下式计算:
[例13.3] 在例13.2中,如果K0 = 0,t = 1,由式(13-2)导出的RS校验码生成多项式就为
= (13-5)
根据多项式的运算,由(13-3)和(13-5)可以得到下面的方程组:
方程中的α也可看成符号的位置,此处i = 0,1,…,5。 求解方程组可以得到RS校验码的2个符号为Q1和Q0,
i
(13-6)
假定mi为下列值:
代入(13-6)式可求得校验符号:
Q1 = α = 101
6
http://m.myl5520.com/shiyonggongju/116030.html