Android 屏幕设置:横屏/全屏模式/坚屏

在看书学习的时候,看到了手机的全屏显示,需要这样设置:

//设置为没有标题栏:

requestWindowFeature(Window.FEATURE_NO_TITLE); 

//设置为全屏模式:

getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);   

//设置为横屏: 

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);  

 

Posted in 移动终端 at July 9, 2011. by 傻猫 .    Views: 7556    2 Comments

Android 简单的照相机程序

终于经过多次找错,修改把一个简单的照相机程序完成了,照相类代码如下:

1 classsurfaceextendsSurfaceViewimplementsSurfaceHolder.Callback {
2
3 SurfaceHolder sfholder;
4
5 Camera camera;
6
7 Bitmap bitmap;
8
9 publicsurface(Context context) {
10 super(context);
11 //TODO Auto-generated constructor stub
12  
13 sfholder=getHolder();
14 sfholder.addCallback(this);
15 sfholder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
16 }
17
18 publicvoidsurfaceChanged(SurfaceHolder holder,intformat,intwidth,
19 intheight) {
20 //TODO Auto-generated method stub
21  Camera.Parameters parameters=camera.getParameters();
22 parameters.setPictureFormat(PixelFormat.JPEG);
23 parameters.setPreviewSize(320,480);
24 parameters.setPictureSize(320,480);
25 camera.setParameters(parameters);
26 camera.startPreview();
27 }
28
29 publicvoidsurfaceCreated(SurfaceHolder holder) {
30 //TODO Auto-generated method stub
31  
32 try{
33 camera=Camera.open();
34 camera.setPreviewDisplay(sfholder);
35 }catch(Exception e) {
36 camera.release();
37 camera=null;
38 }
39 }
40
41 publicvoidsurfaceDestroyed(SurfaceHolder holder) {
42 //TODO Auto-generated method stub
43  camera.stopPreview();
44 camera=null;
45
46 }
47 //拍照
48 publicvoidtakePicture()
49 {
50 if(camera!=null)
51 {
52 camera.takePicture(null,null, jpegCallback);
53 }
54 }
55
56 //拍照并且保存的回调函数
57  
58 privatePictureCallback jpegCallback=newPictureCallback() {
59
60 publicvoidonPictureTaken(byte[] data, Camera camera) {
61 //TODO Auto-generated method stub
62 try
63 {
64 bitmap=BitmapFactory.decodeByteArray(data,0, data.length);
65 File file=newFile("/sdcard/camera1.jpg");
66 BufferedOutputStream bos=newBufferedOutputStream(newFileOutputStream(file));
67 bitmap.compress(Bitmap.CompressFormat.JPEG,80, bos);
68 bos.flush();
69 bos.close();
70 Canvas canvas=sfholder.lockCanvas();
71 canvas.drawBitmap(bitmap,0,0,null);
72 sfholder.unlockCanvasAndPost(canvas);
73 }
74 catch(Exception e)
75 {
76 e.printStackTrace();
77 }
78 }
79 }
80 }

 这个是一个拍照的类,使用的是SurfaceView来实现的,如果想要在一部分上显示,并且使用按钮操作的话,可以修改一下这个类,而且这个是拍照之后停留在拍照页面的,如果需要在拍照后不停留在拍照页面的,可以自行修改和添加参数。

 此程序也演示了,如何在拍完照之后,将照片保存到SD卡上。

实际使用时的操作如何,使用的是按键进行拍照的,其实也可以改为使用按钮进行拍照的,只要对这个类进行简单的修改即可。调用如下:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
if (keyCode == KeyEvent.KEYCODE_DPAD_CENTER)
sf.takePicture();
return super.onKeyDown(keyCode, event);
}

 要使用相机和操作SD卡,则需要添加以下权限: 

<uses-permissionandroid:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
<uses-permissionandroid:name="android.permission.CAMERA"></uses-permission>

 第一条是可以使用扩展存储设备的权限 

第二条是可以使用照相机设备

如果没有这两条权限的话,会报错,具体错误可以在DDMS中查看 。欢迎交流!

希望对大家有所帮助 ! 

此平台使用提Android2.2 V8的系统,如果使用1.5或者是其它的,权限可能会不一样!

 

当然更好的方法是首先检查SD卡是否存在,此程序中没有进行检测,因为我只是在练习相机的使用。

检测代码如下:

 

代码

if(Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED)) {
File sdcardPath
=Environment.getExternalStorageDirectory();
setTitle(sdcardPath.getName());
//将SD卡路径名字设置为标题,只是为了让大家看的更明白些
}else{
Toast.makeText(RecordTest.
this,"没有SD卡",1000).show();
}

 

 

Posted in 移动终端 at July 9, 2011. by 傻猫 .    Views: 3760    No Comments

Android 检测目录是否存在,不存在则创建

方法如下:我们假设SD卡是存在的,如果要检测SD卡是否存在,请参考前面的关于录音的文章,里面有具体的内容,和使用SD卡需要添加的权限,否则无法操作扩展存储设备

1.只创建一级目录的形式为:

例如:只在SD卡上建立一级目录("/sdcard/audio/"):

booleanisFolderExists(String strFolder)
{
File file
=newFile(strFolder);

if(!file.exists())
{
if(file.mkdir())
{
returntrue;
}
else
returnfalse;
}
returntrue;
}

2.建立多级目录的形式如下:

例如:在SD卡上建立多级目录("/sdcard/meido/audio/"):

 

代码

booleanisFolderExists(String strFolder) {
File file
=newFile(strFolder);
if(!file.exists()) {
if(file.mkdirs()) {
returntrue;
}
else{
returnfalse;

}
}
returntrue;

}

 

Posted in 移动终端 at July 9, 2011. by 傻猫 .    Views: 4041    No Comments

Android GPS 定位的实现

今天弄了一个多小时,写了一个GPS获取地理位置代码的小例子,包括参考了网上的一些代码,并且对代码进行了一些修改,希望对大家的帮助。具体代码如下:  要实用Adnroid平台的GPS设备,首先需要添加上权限,所以需要添加如下权限:   

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>

 具体实现代码如下:

首先判断GPS模块是否存在或者是开启: 

privatevoidopenGPSSettings() {
LocationManager alm
=(LocationManager)this
.getSystemService(Context.LOCATION_SERVICE);
if(alm
.isProviderEnabled(android.location.LocationManager.GPS_PROVIDER)) {
Toast.makeText(
this,"GPS模块正常", Toast.LENGTH_SHORT)
.show();
return;
}

Toast.makeText(
this,"请开启GPS!", Toast.LENGTH_SHORT).show();
Intent intent
=newIntent(Settings.ACTION_SECURITY_SETTINGS);
startActivityForResult(intent,
0);//此为设置完成后返回到获取界面

}

 如果开启正常,则会直接进入到显示页面,如果开启不正常,则会进行到GPS设置页面:

查看更多内容...

Posted in 移动终端 at July 9, 2011. by 傻猫 .    Views: 3575    No Comments

Android 文件的上传

一个文件上传的内容的实现,Android要实现文件上传,可以利用Socket上传,也可以模拟Web进行上传,但是如果是使用第一种方式上传,严格的话就得使用TCP,这样容易生成系统死掉,或者是长时间等待,如果是UDP来传,就容易造成数据丢失,因此在这里选择了Web进行上传,使用Web进行上传是模拟的Http Post上传数据,当然,Post上传数据的类,在网上找了一找,方式虽然很多,但是没有一个感觉是我所使用的,所以参照原理之类的,进行了一下修改,算是做了一个参考。并且利用这个类完成了文件和表彰的上传服务。

具体代码如下:

文件与表单上传类: 

packagecom.UpLoadFileTest;

importjava.io.BufferedReader;
importjava.io.DataOutputStream;
importjava.io.File;
importjava.io.FileInputStream;
importjava.io.IOException;
importjava.io.InputStreamReader;

importjava.io.InputStream;
importjava.net.HttpURLConnection;
importjava.net.URL;

importjava.util.Map;

publicclassPostFile {
//上传代码,第一个参数,为要使用的URL,第二个参数,为表单内容,第三个参数为要上传的文件,可以上传多个文件,这根据需要页定
publicstaticString post(String actionUrl, Map<String, String>params,
Map
<String, File>files)throwsIOException {

String BOUNDARY
=java.util.UUID.randomUUID().toString();
String PREFIX
="--", LINEND="\r\n";
String MULTIPART_FROM_DATA
="multipart/form-data";
String CHARSET
="UTF-8";

URL uri
=newURL(actionUrl);
HttpURLConnection conn
=(HttpURLConnection) uri.openConnection();

conn.setReadTimeout(
5*1000);
conn.setDoInput(
true);//允许输入
conn.setDoOutput(true);//允许输出
conn.setUseCaches(false);
conn.setRequestMethod(
"POST");//Post方式
conn.setRequestProperty("connection","keep-alive");
conn.setRequestProperty(
"Charsert","UTF-8");

conn.setRequestProperty(
"Content-Type", MULTIPART_FROM_DATA
+";boundary="+BOUNDARY);


//首先组拼文本类型的参数
StringBuilder sb=newStringBuilder();
for(Map.Entry<String, String>entry : params.entrySet()) {
sb.append(PREFIX);
sb.append(BOUNDARY);
sb.append(LINEND);
sb.append(
"Content-Disposition: form-data; name=\""
+entry.getKey()+"\""+ LINEND);
sb.append("Content-Type: text/plain; charset="+CHARSET+LINEND);
sb.append(
"Content-Transfer-Encoding: 8bit"+LINEND);
sb.append(LINEND);
sb.append(entry.getValue());
sb.append(LINEND);
}

DataOutputStream outStream
=newDataOutputStream(conn
.getOutputStream());
outStream.write(sb.toString().getBytes());
//发送文件数据
if(files!=null)
for(Map.Entry<String, File>file : files.entrySet()) {
StringBuilder sb1
=newStringBuilder();
sb1.append(PREFIX);
sb1.append(BOUNDARY);
sb1.append(LINEND);
sb1
.append(
"Content-Disposition: form-data; name=\"file\"; filename=\""
+file.getKey()+"\""+ LINEND);
sb1.append("Content-Type: application/octet-stream; charset="
+CHARSET+LINEND);
sb1.append(LINEND);
outStream.write(sb1.toString().getBytes());

InputStream is
=newFileInputStream(file.getValue());
byte[] buffer=newbyte[1024];
intlen=0;
while((len=is.read(buffer))!=-1) {
outStream.write(buffer,
0, len);
}

is.close();
outStream.write(LINEND.getBytes());
}

//请求结束标志
byte[] end_data=(PREFIX+BOUNDARY+PREFIX+LINEND).getBytes();
outStream.write(end_data);
outStream.flush();
//得到响应码
intres=conn.getResponseCode();
InputStream in
=conn.getInputStream();
InputStreamReader isReader
=newInputStreamReader(in);

BufferedReader bufReader
=newBufferedReader(isReader);

String line
=null;
String data
="OK";
while((line=bufReader.readLine())==null)
data
+=line;

if(res==200) {
intch;
StringBuilder sb2
=newStringBuilder();
while((ch=in.read())!=-1) {
sb2.append((
char) ch);
}
}
outStream.close();
conn.disconnect();
returnin.toString();
}

}

以上如果要写入(上传)数据,这里使用的是out.write亦可使用out.wrtebyte(content)这样子也可以,省得在这里转换了,交给系统进行转换

这个可以根据个人的需要,加上等待条等等,如果要加上等待条的话,需要使用发送消息的方式进行,这个是我所想到的,其它的方式没有考虑好呢,有兴趣的人可以自己加上去!我在这里不再给增加了,增加的话,将在下载中添加一个下载的进度提示条。 

实现内容如下:


Button btn1;

EditText view1;
EditText text1;
String SDPath
="/sdcard/";

/**Called when the activity is first created.*/
@Override
publicvoidonCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
view1
=(EditText) findViewById(R.id.view1);
text1
=(EditText) findViewById(R.id.edit1);
btn1
=(Button) findViewById(R.id.btn1);
btn1.setOnClickListener(
newView.OnClickListener() {

@Override
publicvoidonClick(View v) {
//TODO Auto-generated method stub
getFile();
try{
String name
=URLEncoder.encode(text1.getText().toString(),"utf-8");
Map
<String, String>params=newHashMap<String, String>();
params.put(
"NAME", name);
Map
<String, File>files=newHashMap<String, File>();
files.put(getFile(),
newFile("/sdcard/"+getFile()));
view1.setText(PostFile.post(
"http://wdsl.recordinfo.tk/default.aspx", params, files));
}
catch(Exception e) {
//TODO Auto-generated catch block
e.printStackTrace();
}

}
});
}

String getFile() {
File file
=newFile(SDPath);
File[] files
=file.listFiles(newfileFilter());
String filename
="";
for(File file1 : files) {
filename
=file1.getName();
}

Toast.makeText(
this, filename, Toast.LENGTH_LONG).show();
spabr />
Toast.makeText(
paramsan .000;">SENGan 4000000;">>&e="coyan sty ao000; #0cstyle="color: #进行转换

这个可以根据个:000000;2f;"Vo这个可lor: #000000;">http://wdsl.recordinfo.tk/default.aspx", filename, Toast.LENGTH_LO
}
catch<;">, filename, Toast.LENGTH_LOle="colspan>file1.getName();00;dsWithle("==file.listFiles(char.cl000cket;">"lass=的是

/亦果要了︀oidan>容攓生成

查看更多内容...

Posted in 移动终端 at July 9, 20115 by 傻猫 .    Views: 3575    No Comments
,个是">Fi"col"> #00spain /sdcasamooll #m/tylegory/Mob
秼终端
at July 9, 2011. by 傻猫 ."Android GPS an ss: 2910"Android GPS 定位的实现">查看更多内容...
Posted in 移动终端 at July 9, 20114>
Fi"> /sdcasamooll #m/arch() 通过 #00捀Getor: #00徍<提n s)ts">No Comments
这把三种
or: #0使篔较捀tff;in种是out 了部分ﻣin.toin共in使函>}<捀都d/div>直接调isc捀传

问样络时候捀记l上如果问渀个要使用这个是我所想到的,其它的方式没有考dfd03b2c-2e4有73e,5-bd609d9cd8e7>

代码


@Override
catch<:span>=params,
Map
File file, filename, Toast.LENGTH_LOri00000;">HashMapjava.ip">/s00;a:span>);
Map
(H>/s0000;">java.i) ulo.le=n00;a: #008an style="span>=
tream();
InputStreamReader isReader
=new/s00;a:span> 0;"int0;">conn.getInputStream();
InputStreamReader isReader
=newtream(e) {
n stylemReader(in);

BufferedReader bufReader
=file.listFiles();
Map
:span>file.listFiles(null;
String data
="OK"StringBuilder();
whilepen=:span>=
BufferedReader bue(),
, filename, Toast.LENGTH_LOle #0000:span>file.listFiles(}

T.maine="color:pen=e) {


Toast.makeText(

@Override
catch<:span>=params,
Map

@Override
000000;">==}
catch<:span>T, filename, Toast.LENGTH_LOri00000;">HashMapfile.listFiles();
Map
0;">file.listFiles(
, len);
}
file.listFiles(file.listFiles(newfile.listFiles({
String name
java.i ">/s000f:span>);
Map
(H>/s0000;">java.i) ulo.le=n00;a: #008an style="span>=
=new/s000f:span> 0;"int0;">conn.getInputStream();
InputStreamReader isReader
=newn stylemReader(in);

BufferedReader bufReader
=file.listFiles();
file.listFiles(ch;
StringBuilder sb2

BufferedReader bue="color: #000000;">);
Map
OK
"StringBuilder();
whilepen=:span>=}

T.maine="color:pen=e) {


Toast.makeText(

@Override
catch<:span>Fiinfo=params,
Map
, len);
}
er() {

@Override
>}.set>000000;">==}
catch<:span>H>/s0000;">java.i ">/s000f:span>);
Map
(H>/s0000;">java.i)">.set>000000;">==
.set>000000;">==}0000;">+
Fi 是out捀olor:olo需上设置ff;tru=:span>catch<">/s000fe="cDoint=/s000fe="cDoOute="le(=/s000fe="cRequn sM>.set>000000;">====}0000;">+.set>000000;">==}olor: #000000;">, len);
}
lor: #0">/s000fe="cUn>=
, filename, Toast.LENGTH_LOlegenere) >.set>000000;">==}0000;">+
==}olor: #000000;">, len);
}
lor: #0">/s000fe="c00;">*/=
.set>000000;">==}0000;">+
==}olor: #000000;">, len);
}
lor: #0">/s000fe="cRequn syler /tyle(
Post方式bufReader.readLine()).set>000000;">==Post方式==}0000;">+
bufReader.readLine())er() {

@Override
.set>000000;">==}
catch<">/s000fe000f0000;">>.set>000000;">==}0000;">+
==}
catch<"0000;pendOute="color: st >.set>000000;">==File file
, filename, Toast.LENGTH_LOri00000;">HashMap/s000f 0;"Oute="color:/span>.set>000000;">==}0000;">+
+LINEND)."0000;n style000/span>.set>000000;">==File file, filename, Toast.LENGTH_LOri #0000:span>);
Map
0;">file.listFiles(
file.listFiles(.set>000000;">==file.listFiles(newfile.listFiles(==file.listFiles(onnectiteBBonnean>conn.getInpspan />);
Map
n>.set>000000;">==
HashMap
==HashMap
/s000f 0;"intn stylemReader(in);

BufferedReader bufReader
=file.listFiles();
Map
n>.set>000000;">==file.listFiles(==ch;
StringBuilder sb2
BufferedReader bue="color: #000000;">);
Mapspan /"StringBuilder();<00000;tyle="color: #0000ff;">while=}
<.maine="color:ylecolpen=e) {
}n>.set>000ff;">char
,个是">Fi"col"> #00spain /sdcasamooll #m/tylegory/Mob
秼终端
at July 9, 2011. by 傻猫 ."Android GPS an ss: 4417"Android GPS 定位的实现">查看更多内容...
Posted in 移动终端 at July 9, 20113 by 傻猫 .    Views: 3575   

待.discAndroid连接样络时候捀昍传<次都能连接yte(络捀

使痶候捀样络状态or: #0佋判断捀p>以等待样络则.write荳时提醒isc户or: #00置据的类上判断样络态捀首先需上有書FIX<渀个捀tff;渀个ﻣin.to即䅊许>问样络态:">in.to要使用这个是我所想到的pre,>000000;">==.set>000000;">==File(SDPath);
Fi00000="an roid.r /missspa.ACCESS_NETWORK_STnTE0;">file.listFiles(
charp0 sp0 p个是more00 a hspf="">/sdcasamooll #m/arch(
查朋b多lass=.. <00ff;"!-- 0;d or: #0 --> ,个是">Fi"col"> #00spain
/sdcasamooll #m/tylegory/Mob
秼终端
at July 9, 2011. by 傻猫 ."Android GPS an ss: 6570"Android GPS 定位的实现">查看更多内容...0个是">Fi_0;d00 s> 0个是"134rsearfix"> /sdcasamooll #m/2011/07/p134/1/">w1/sdcasamooll #m/2011/07/p134/2/">cola0 sli0 li0 a hspf="">/sdcasamooll #m/2011/07/p134/3/">3ola0 sli0 li0 a hspf="">/sdcasamooll #m/2011/07/p134/4/">4ola0 sli0 li个是nlor00 a hspf="">/sdcasamooll #m/2011/07/p134/2/">»"n>a0 sli0 /ol> 0s> <00ff;"!-- 0;d #leftcolumn --> 0id="rightcolumn"> /sdcarww.samoolsofneaom" tar0;"="_blank">傻猫le=:sa0 sh2> /sdcarww.samoolsofneaom" tar0;"="_blank" title="> 区宽带运营支撑系统捀 区宽带运营啭宀体化解决是案00 img src="">/sdcarww.samooll #m/usr/le=m/s/hello_d/im134s/kdbosolong" 0 sa0 sli0 li个是wid0;"_0;d00 sli0 li个是wid0;"_top00 sli0 li个是wid0;"00 0h20最pn 布 sh2>

sli0 li个是wid0;"_0;d00 sli0 li个是wid0;"_top00 sli0 li个是wid0;"00
    li0 a hspf="">/sdcasamooll #m/abonn/">>于我 >a0 sli0 li0 a hspf="">/sdcasamooll #m/mywork/">/sdcavali"coor.w3.org/ch ck/spferer00Vali" XHTML >a0 sli0 li0 a hspf="">/sdcarww.typ=cho.org00Typ=cho >a0 sli0
sli0 li个是wid0;"_0;d00 sli0 <00ff;"!-- 0;d #rightcolumn --> <00ff;"!-- 0;d o000/ain/>T--> 0id="foo/sr00 0个是000/ain/>00 <.set>0a hspf="">/sdcarww.samooll #m/">ho"<;"a>要佀要|要佀要
/sdcasamooll #m/feed/">sparies (rss);"a>要佀要|要佀要/sdcasamooll #m/feed/ #mbr />/"> #mbr /> (rss);"a>要佀要|要佀要a0 s.set> ©2017 /sdcarww.samooll #m/">傻猫样络日志;"a>. Powerepaby /sdcatyp=cho.org/">Typ=cho >a0 ))) ICP:蜀ICP备05009250号. <00ff; <00ff;"!-- 0;d #foo/sr --> 0style="display:none00