Android拍照上传功能示例代码
本文实例讲述了Android实现拍照上传功能的方法。分享给大家供大家参考,具体如下:
1、LoginWindow.java--登录窗口
packagecom.hemi.rhet;
importcom.hemi.rhet.R;
importandroid.app.Activity;
importandroid.content.Intent;
importandroid.os.Bundle;
importandroid.view.KeyEvent;
importandroid.view.View;
importandroid.view.View.OnClickListener;
importandroid.widget.Button;
importandroid.widget.CheckBox;
importandroid.widget.EditText;
publicclassLoginWindowextendsActivity{
@Override
publicvoidonCreate(BundlesavedInstanceState){
System.out.println("enterLoginWindow.onCreate()!");
super.onCreate(savedInstanceState);
setContentView(R.layout.login_window);
mUserName=(EditText)findViewById(R.id.username);
mUserPasswd=(EditText)findViewById(R.id.userpasswd);
cbx_cmwap=(CheckBox)findViewById(R.id.cbx_cmwap);
loginButton=(Button)findViewById(R.id.login_button);
exitButton=(Button)findViewById(R.id.exit_button);
loginBtnListener=newView.OnClickListener(){
publicvoidonClick(Viewview){
LoginWindow.isCmwap=cbx_cmwap.isChecked();
if(view==loginButton){
launchFetion();
}elseif(view==exitButton){
finish();
}
}
};
loginButton.setOnClickListener(loginBtnListener);
exitButton.setOnClickListener(loginBtnListener);
}
privatevoidlaunchFetion(){
Intenti=newIntent(this,FuncSelector.class);
i.putExtra(KEY_LOGIN_NAME,mUserName.getText().toString());
i.putExtra(KEY_LOGIN_PASSWD,mUserPasswd.getText().toString());
i.putExtra(KEY_LOGIN_TYPE,cbx_cmwap.isChecked());
startActivity(i);
}
@Override
publicbooleanonKeyDown(intkeyCode,KeyEventmsg){
//System.out.println("enteronKeyDown()inLoginWindow!");
//
//if(null!=loginBtnListener){
//Viewaview=getCurrentFocus();
//loginBtnListener.onClick(aview);
//}
returnfalse;
}
privateButtonloginButton,exitButton;
privateEditTextmUserName;
privateEditTextmUserPasswd;
privateCheckBoxcbx_cmwap;
privateOnClickListenerloginBtnListener;
publicstaticfinalStringKEY_LOGIN_NAME="login_name";
publicstaticfinalStringKEY_LOGIN_PASSWD="login_passwd";
publicstaticfinalStringKEY_LOGIN_TYPE="login_type";
publicstaticbooleanisCmwap=false;
}
2.FuncSelector.java--功能模块选择窗口
packagecom.hemi.rhet;
importjava.util.ArrayList;
importjava.util.HashMap;
importcom.hemi.rhet.R;
importandroid.app.Activity;
importandroid.content.Intent;
importandroid.os.Bundle;
importandroid.util.Log;
importandroid.view.Menu;
importandroid.view.MenuItem;
importandroid.view.View;
importandroid.widget.AdapterView;
importandroid.widget.GridView;
importandroid.widget.SimpleAdapter;
importandroid.widget.AdapterView.OnItemClickListener;
publicclassFuncSelectorextendsActivity{
@Override
publicvoidonCreate(BundlesavedInstanceState){
Log.i("info","enterLoginWindow.onCreate()!");
super.onCreate(savedInstanceState);
setContentView(R.layout.func_selector);
initFuncGrids();
}
privatevoidinitFuncGrids(){
GridViewfuncSeleView=(GridView)findViewById(R.id.func_selector);
//生成动态数组,并且转入数据
ArrayList<HashMap<String,Object>>lstImageItem=newArrayList<HashMap<String,Object>>();
HashMap<String,Object>map=newHashMap<String,Object>();
map.put("ItemImage",R.drawable.photo_upload);//添加图像资源的ID
map.put("ItemText",getString(R.string.photo_upload));//按序号做ItemText
lstImageItem.add(map);
map=newHashMap<String,Object>();
map.put("ItemImage",R.drawable.icon);
map.put("ItemText",getString(R.string.sys_config));
lstImageItem.add(map);
for(inti=1;i<=10;i++){
map=newHashMap<String,Object>();
map.put("ItemImage",R.drawable.icon);//添加图像资源的ID
map.put("ItemText","NO."+String.valueOf(i));//按序号做ItemText
lstImageItem.add(map);
}
//生成适配器的ImageItem<====>动态数组的元素,两者一一对应
SimpleAdaptersaImageItems=newSimpleAdapter(this,//没什么解释
lstImageItem,//数据来源
R.layout.night_item,//night_item的XML实现
//动态数组与ImageItem对应的子项
newString[]{"ItemImage","ItemText"},
//ImageItem的XML文件里面的一个ImageView,两个TextViewID
newint[]{R.id.ItemImage,R.id.ItemText});
//null);
//添加并且显示
funcSeleView.setAdapter(saImageItems);
//saImageItems.notifyDataSetChanged();
//添加消息处理
funcSeleView.setOnItemClickListener(newItemClickListener());
}
publicbooleanonCreateOptionsMenu(Menumenu){
super.onCreateOptionsMenu(menu);
menu.add(0,EXIT_ID,0,R.string.back_button);
returntrue;
}
//@Override
publicbooleanonMenuItemSelected(intfeatureId,MenuItemitem){
booleanresult=true;
switch(item.getItemId()){
caseEXIT_ID:
this.finish();
break;
default:
result=super.onMenuItemSelected(featureId,item);
break;
}
returnresult;
}
//当AdapterView被单击(触摸屏或者键盘),则返回的Item单击事件
classItemClickListenerimplementsOnItemClickListener{
publicvoidonItemClick(AdapterView<?>arg0,//TheAdapterViewwherethe
//clickhappened
Viewarg1,//TheviewwithintheAdapterViewthatwasclicked
intarg2,//Thepositionoftheviewintheadapter
longarg3//Therowidoftheitemthatwasclicked
){
//在本例中arg2=arg3
HashMap<String,Object>item=(HashMap<String,Object>)arg0
.getItemAtPosition(arg2);
StringtmpStr=(String)item.get("ItemText");
//item.put("ItemText",tmpStr+tmpStr.substring(tmpStr.length()-1));
//显示所选Item的ItemText
//setTitle((String)item.get("ItemText"));
Log.i("info",(String)item.get("ItemText"));
((SimpleAdapter)arg0.getAdapter()).notifyDataSetChanged();
Intenti;
switch(arg2){
case0:
i=newIntent();
i.setClass(FuncSelector.this,PhotoUpload.class);
startActivity(i);
break;
case1:
i=newIntent();
i.setClass(FuncSelector.this,ConfigWindow.class);
startActivity(i);
break;
default:
break;
}
}
}
privatestaticfinalintTAKE_PHOTO_ID=Menu.FIRST;
privatestaticfinalintUPLOAD_PHOTO_ID=Menu.FIRST+1;
privatestaticfinalintEXIT_ID=Menu.FIRST+3;
}//FuncSelector
3.PhotoUpload.java--照片上传模块
packagecom.hemi.rhet;
importjava.io.BufferedReader;
importjava.io.ByteArrayOutputStream;
importjava.io.DataOutputStream;
importjava.io.File;
importjava.io.FileInputStream;
importjava.io.FileNotFoundException;
importjava.io.FileOutputStream;
importjava.io.IOException;
importjava.io.InputStreamReader;
importjava.io.OutputStream;
importjava.io.UnsupportedEncodingException;
importjava.net.HttpURLConnection;
importjava.net.MalformedURLException;
importjava.net.URL;
importjava.text.SimpleDateFormat;
importjava.util.ArrayList;
importjava.util.Date;
importjava.util.HashMap;
importjava.util.List;
importorg.apache.http.Header;
importorg.apache.http.HttpResponse;
importorg.apache.http.NameValuePair;
importorg.apache.http.client.ClientProtocolException;
importorg.apache.http.client.HttpClient;
importorg.apache.http.client.entity.UrlEncodedFormEntity;
importorg.apache.http.client.methods.HttpPost;
importorg.apache.http.entity.FileEntity;
importorg.apache.http.impl.client.DefaultHttpClient;
importorg.apache.http.message.BasicNameValuePair;
importcom.hemi.rhet.R;
importandroid.app.Activity;
importandroid.content.Intent;
importandroid.graphics.Bitmap;
importandroid.net.Uri;
importandroid.os.Bundle;
importandroid.os.Environment;
importandroid.util.Log;
importandroid.view.Menu;
importandroid.view.MenuItem;
importandroid.view.View;
importandroid.widget.AdapterView;
importandroid.widget.GridView;
importandroid.widget.ImageView;
importandroid.widget.SimpleAdapter;
importandroid.widget.Toast;
importandroid.widget.AdapterView.OnItemClickListener;
publicclassPhotoUploadextendsActivity{
@Override
publicvoidonCreate(BundlesavedInstanceState){
Log.i("info","enterLoginWindow.onCreate()!");
super.onCreate(savedInstanceState);
setContentView(R.layout.func_selector);
}
@Override
protectedvoidonActivityResult(intrequestCode,intresultCode,Intentdata){
super.onActivityResult(requestCode,resultCode,data);
if(TAKE_PHOTO_ID==requestCode){
if(resultCode!=RESULT_OK)return;
Bundleextras=data.getExtras();
try{
BitmapphotoCaptured=(Bitmap)extras.get("data");
ImageViewimg=newImageView(this);
img.setImageBitmap(photoCaptured);
setContentView(img);
//storetosdcard
ByteArrayOutputStreambaos=newByteArrayOutputStream();
photoCaptured.compress(Bitmap.CompressFormat.JPEG,100,baos);
byte[]photoBytes=baos.toByteArray();
FileaFile=newFile(getDatedFName(SD_CARD_TEMP_DIR));
photoPath=aFile.getAbsolutePath();
booleanb;
if(aFile.exists())b=aFile.delete();
//f.mkdirs();
aFile.createNewFile();//needaddpermissiontomanifest
FileOutputStreamfos=newFileOutputStream(aFile);
fos.write(photoBytes);
fos.close();
Log.d("info","onPictureTaken-wrotebytes:"
+photoBytes.length);
UricapturedImage=Uri
.parse(android.provider.MediaStore.Images.Media
.insertImage(getContentResolver(),aFile
.getAbsolutePath(),null,null));
Log.i("camera","Selectedimage:"+capturedImage.toString());
}catch(FileNotFoundExceptione){
e.printStackTrace();
}catch(IOExceptione){
e.printStackTrace();
}
}elseif(UPLOAD_PHOTO_ID==requestCode){
}
}
publicbooleanonCreateOptionsMenu(Menumenu){
super.onCreateOptionsMenu(menu);
menu.add(0,TAKE_PHOTO_ID,0,R.string.take_photo);
menu.add(0,UPLOAD_PHOTO_ID,0,R.string.upload_photo);
menu.add(0,BACK_ID,0,R.string.back_button);
returntrue;
}
//@Override
publicbooleanonMenuItemSelected(intfeatureId,MenuItemitem){
booleanresult=true;
switch(item.getItemId()){
caseTAKE_PHOTO_ID:
Log.i("info","readytotakephotos!");
Intenti=newIntent("android.media.action.IMAGE_CAPTURE");
startActivityForResult(i,TAKE_PHOTO_ID);
result=true;
break;
caseUPLOAD_PHOTO_ID:
uploadFile2Svr();
break;
caseBACK_ID:
this.finish();
break;
default:
result=super.onMenuItemSelected(featureId,item);
break;
}
returnresult;
}
publicvoiduploadFile2Svr(){
HttpClienthttpclient=newDefaultHttpClient();
StringurlStr=newStringBuffer().append(HTTP_PROTOCOL)
.append(/*SERVER_IP*/ConfigWindow.getServerIp())
.append(':')
.append(/*SERVER_PORT*/ConfigWindow.getServerPort())
.append(FILE_UPLOADER_URL)
.toString();
HttpPosthttppost=newHttpPost(urlStr);
StringuploadMsg="上传照片失败!";
try{
List<NameValuePair>nameValuePairs=newArrayList<NameValuePair>();
//YourDATA
nameValuePairs.add(newBasicNameValuePair("filename",("IMAGE.jpg")));
//nameValuePairs.add(newBasicNameValuePair("orderno","1"));
//nameValuePairs.add(newBasicNameValuePair("userid","123"));
//nameValuePairs.add(newBasicNameValuePair("attach_type","1"));
//httppost.setEntity(newUrlEncodedFormEntity(nameValuePairs));
FileaFile=newFile(photoPath);
Log.i("info--photoPath:",photoPath);
FileEntityfileEty=newFileEntity(aFile,"binary/octet-stream");
httppost.setEntity(fileEty);
httppost.addHeader("filename",/*("IMAGE.jpg")*/aFile.getName());
HttpResponseresponse;
response=httpclient.execute(httppost);
//Log.i("info--response:",response.getStatusLine().getReasonPhrase());
Header[]headers=response.getAllHeaders();
headers=response.getHeaders("resultcode");
if(headers[0].getValue().equals("0")){
uploadMsg="上传照片成功!";
}
}catch(UnsupportedEncodingExceptione){
//e.printStackTrace();
uploadMsg+=e.toString();
Log.e("exception",e.toString());
}catch(ClientProtocolExceptione){
//e.printStackTrace();
uploadMsg+=e.toString();
Log.e("exception",e.toString());
}catch(IOExceptione){
//e.printStackTrace();
uploadMsg+=e.toString();
Log.e("exception",e.toString());
}finally{
Toast.makeText(PhotoUpload.this,uploadMsg,
Toast.LENGTH_LONG).show();
httpclient.getConnectionManager().shutdown();
}
}
publicvoiduploadFile2Svr2(){
BufferedReaderin=null;
HttpClienthttpclient=newDefaultHttpClient();
StringurlStr=newStringBuffer().append(HTTP_PROTOCOL)
.append(ConfigWindow.getServerIp())
.append(ConfigWindow.getServerPort())
.append(FILE_UPLOADER_URL)
.toString();
URLurl=null;
try{
url=newURL(urlStr);
}catch(MalformedURLExceptione1){
e1.printStackTrace();
}
HttpURLConnectionconn=null;
DataOutputStreamdos=null;
StringlineEnd="/r/n";
StringtwoHyphens="--";
Stringboundary="*****";
intmaxBufferSize=16*1024;
try{
//List<NameValuePair>nameValuePairs=newArrayList<NameValuePair>();
////YourDATA
//nameValuePairs.add(newBasicNameValuePair("filename",getDatedFName("IMAGE.jpg")));
//nameValuePairs.add(newBasicNameValuePair("orderno","1"));
//nameValuePairs.add(newBasicNameValuePair("userid","123"));
//nameValuePairs.add(newBasicNameValuePair("attach_type","1"));
//httppost.setEntity(newUrlEncodedFormEntity(nameValuePairs));
//OpenaHTTPconnectiontotheURL
conn=(HttpURLConnection)url.openConnection();
conn.setConnectTimeout(120000);
//AllowInputs
conn.setDoInput(true);
//AllowOutputs
conn.setDoOutput(true);
//Don'tuseacachedcopy.
conn.setUseCaches(false);
//Useapostmethod.
conn.setRequestMethod("POST");
conn.setRequestProperty("Connection","Keep-Alive");
conn.setRequestProperty("Content-Type",
//"multipart/form-data;boundary="+boundary);
"application/x-www-form-urlencoded");
conn.setRequestProperty("user-agent",
"Mozilla/5.0(Windows;U;WindowsNT5.2;zh-CN;rv:1.9.1.6)Gecko/20091201Firefox/3.5.6GTB6");
//conn.setRequestProperty("accept-language","zh-cn,zh;q=0.5");
//conn.setRequestProperty("Content-Type","multipart/form-data;boundary="+boundary);
conn.connect();
//OutputStreamconnOs=conn.getOutputStream();
dos=newDataOutputStream(conn.getOutputStream());
dos.writeBytes(twoHyphens+boundary+lineEnd);
dos.writeBytes("Content-Disposition:form-data;name=/"uploadedfile/";filename=/""
+"exsistingFileName"+"/""+lineEnd);
//dos.writeBytes(lineEnd);
Log.i("info","Headersarewritten");
//uploadfiletowebserverviahttp
FileInputStreamfileInputStream=newFileInputStream(photoPath);
//createabufferofmaximumsize
intbytesAvailable=fileInputStream.available();
intbufferSize=Math.min(bytesAvailable,maxBufferSize);
byte[]buffer=newbyte[bufferSize];
//readfileandwriteitintoform...
intbytesRead=fileInputStream.read(buffer,0,bufferSize);
while(bytesRead>0){
dos.write(buffer,0,bufferSize);
bytesAvailable=fileInputStream.available();
bufferSize=Math.min(bytesAvailable,maxBufferSize);
bytesRead=fileInputStream.read(buffer,0,bufferSize);
}
//sendmultipartformdatanecesssaryafterfiledata...
dos.writeBytes(lineEnd);
dos.writeBytes(twoHyphens+boundary+twoHyphens+lineEnd);
//closestreams
Log.e("info","Fileiswritten");
fileInputStream.close();
dos.flush();
dos.close();
dos=null;
//response
//HttpResponseresponse;
//response=httpclient.execute(httppost);
//response=httpclient.execute(conn.get);
in=newBufferedReader(
newInputStreamReader(conn.getInputStream()));
StringBuffersb=newStringBuffer("");
Stringline="";
StringNL=System.getProperty("line.separator");
while((line=in.readLine())!=null){
sb.append(line+NL);
}
in.close();
Stringresult=sb.toString();
Log.i("info",result);
}catch(ClientProtocolExceptione){
e.printStackTrace();
}catch(IOExceptione){
e.printStackTrace();
}finally{
if(in!=null){
try{
in.close();
}catch(IOExceptionioe){
Log.e("error",ioe.toString());
}
}
}
}
publicstaticStringgetDatedFName(Stringfname){
StringBufferresult=newStringBuffer();
SimpleDateFormatdf=newSimpleDateFormat("yyMMddHHmmss");
StringdateSfx="_"+df.format(newDate());
intidx=fname.lastIndexOf('.');
if(idx!=-1){
result.append(fname.substring(0,idx));
result.append(dateSfx);
result.append(fname.substring(idx));
}else{
result.append(fname);
result.append(dateSfx);
}
returnresult.toString();
}
//=============================================
//privateBitmapphotoCaptured;
privateStringphotoPath="/sdcard/IMAGE_100225083437.jpg";//"/sdcard/1.txt";
privatestaticfinalintTAKE_PHOTO_ID=Menu.FIRST;
privatestaticfinalintUPLOAD_PHOTO_ID=Menu.FIRST+1;
privatestaticfinalintBACK_ID=Menu.FIRST+3;
privatestaticfinalStringHTTP_PROTOCOL="http://";
privatestaticfinalStringFILE_UPLOADER_URL="/fileuploader/system/fileUpload";
privateStringSD_CARD_TEMP_DIR=Environment.getExternalStorageDirectory()+File.separator+"IMG.jpg";
}
4.ConfigWindow.java--系统配置窗口
packagecom.hemi.rhet;
importcom.hemi.rhet.R;
importandroid.app.Activity;
importandroid.content.Intent;
importandroid.os.Bundle;
importandroid.util.Log;
importandroid.view.KeyEvent;
importandroid.view.View;
importandroid.view.View.OnClickListener;
importandroid.widget.Button;
importandroid.widget.CheckBox;
importandroid.widget.EditText;
publicclassConfigWindowextendsActivity{
@Override
publicvoidonCreate(BundlesavedInstanceState){
System.out.println("enterConfigWindow.onCreate()!");
super.onCreate(savedInstanceState);
setContentView(R.layout.config_window);
mServerIP=(EditText)findViewById(R.id.serverip);
mServerPort=(EditText)findViewById(R.id.serverport);
//hemerr
mServerIP.setText(serverIp);
mServerPort.setText(serverPort);
okButton=(Button)findViewById(R.id.ok_button);
backButton=(Button)findViewById(R.id.back_button);
loginBtnListener=newView.OnClickListener(){
publicvoidonClick(Viewview){
if(view==okButton){
serverIp=mServerIP.getText().toString();
serverPort=mServerPort.getText().toString();
Log.i("info","IPis:"+serverIp+"/tPortis:"+serverPort);
finish();
}elseif(view==backButton){
finish();
}
}
};
okButton.setOnClickListener(loginBtnListener);
backButton.setOnClickListener(loginBtnListener);
}
privatevoidlaunchFetion(){
Intenti=newIntent(this,FuncSelector.class);
i.putExtra(KEY_LOGIN_NAME,mServerIP.getText().toString());
i.putExtra(KEY_LOGIN_PASSWD,mServerPort.getText().toString());
startActivity(i);
}
@Override
publicbooleanonKeyDown(intkeyCode,KeyEventmsg){
//System.out.println("enteronKeyDown()inLoginWindow!");
//
//if(null!=loginBtnListener){
//Viewaview=getCurrentFocus();
//loginBtnListener.onClick(aview);
//}
returnfalse;
}
publicstaticStringgetServerIp(){
returnserverIp;
}
publicstaticStringgetServerPort(){
returnserverPort;
}
privateButtonokButton,backButton;
privateEditTextmServerIP;
privateEditTextmServerPort;
privateOnClickListenerloginBtnListener;
publicstaticfinalStringKEY_LOGIN_NAME="login_name";
publicstaticfinalStringKEY_LOGIN_PASSWD="login_passwd";
publicstaticfinalStringKEY_LOGIN_TYPE="login_type";
publicstaticStringserverIp="192.168.0.98";//;
publicstaticStringserverPort="8081";
}
还需要增加bg_logo.jpg、icon.png、photo_upload.png等几个图片。
Android拍照上传程序的xml配置文件
1.login_window.xml
<?xmlversion="1.0"encoding="utf-8"?> <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical"android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@drawable/bg_logo" > <TextViewandroid:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="20dip" android:layout_marginRight="20dip" android:text="@string/user_name" /> <EditText android:id="@+id/username" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginLeft="20dip" android:layout_marginRight="20dip" android:scrollHorizontally="true" android:autoText="false" android:text="user" android:capitalize="none" android:gravity="fill_horizontal" android:textAppearance="?android:attr/textAppearanceMedium" /> <TextViewandroid:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="20dip" android:layout_marginRight="20dip" android:text="@string/user_passwd"/> <EditTextandroid:id="@+id/userpasswd" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginLeft="20dip" android:layout_marginRight="20dip" android:scrollHorizontally="true" android:autoText="false" android:text="user" android:capitalize="none" android:gravity="fill_horizontal" android:password="true" android:textAppearance="?android:attr/textAppearanceMedium"/> <CheckBoxandroid:id="@+id/cbx_cmwap" android:text="CMWAP" android:checked="false" android:layout_marginLeft="20dip" android:layout_marginRight="20dip" android:layout_width="wrap_content" android:layout_height="wrap_content"/> <RelativeLayoutandroid:orientation="horizontal" android:layout_width="wrap_content" android:layout_height="wrap_content"> <Buttonandroid:id="@+id/login_button" android:text="LOGIN" android:layout_marginLeft="20dip" android:layout_marginRight="20dip" android:layout_alignParentRight="true" android:layout_width="wrap_content" android:layout_height="wrap_content"/> <Buttonandroid:id="@+id/exit_button" android:text="EXIT" android:layout_marginLeft="20dip" android:layout_marginRight="20dip" android:layout_toLeftOf="@id/login_button" android:layout_width="wrap_content" android:layout_height="wrap_content"/> </RelativeLayout> </LinearLayout>
2.func_selector.xml
<?xmlversion="1.0"encoding="utf-8"?> <GridViewxmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/func_selector" android:layout_width="fill_parent" android:layout_height="fill_parent" android:numColumns="auto_fit" android:verticalSpacing="10dp" android:horizontalSpacing="10dp" android:columnWidth="90dp" android:stretchMode="columnWidth" android:gravity="center" android:background="@drawable/bg_logo" />
3.night_item.xml
<?xmlversion="1.0"encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_height="wrap_content" android:paddingBottom="4dip"android:layout_width="fill_parent"> <ImageView android:layout_height="wrap_content" android:id="@+id/ItemImage" android:layout_width="wrap_content" android:layout_centerHorizontal="true"> </ImageView> <TextView android:layout_width="wrap_content" android:layout_below="@+id/ItemImage" android:layout_height="wrap_content" android:text="TextView01" android:layout_centerHorizontal="true" android:id="@+id/ItemText"> </TextView> </RelativeLayout>
4.config_window.xml
<?xmlversion="1.0"encoding="utf-8"?> <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical"android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextViewandroid:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="20dip" android:layout_marginRight="20dip" android:text="@string/server_ip" /> <EditText android:id="@+id/serverip" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginLeft="20dip" android:layout_marginRight="20dip" android:scrollHorizontally="true" android:autoText="false" android:capitalize="none" android:gravity="fill_horizontal" android:textAppearance="?android:attr/textAppearanceMedium" /> <TextViewandroid:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="20dip" android:layout_marginRight="20dip" android:text="@string/server_port"/> <EditTextandroid:id="@+id/serverport" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginLeft="20dip" android:layout_marginRight="20dip" android:scrollHorizontally="true" android:autoText="false" android:capitalize="none" android:gravity="fill_horizontal" android:textAppearance="?android:attr/textAppearanceMedium"/> <RelativeLayoutandroid:orientation="horizontal" android:layout_width="wrap_content" android:layout_height="wrap_content"> <Buttonandroid:id="@+id/ok_button" android:text="@string/ok_button" android:layout_marginLeft="20dip" android:layout_marginRight="20dip" android:layout_alignParentRight="true" android:layout_width="wrap_content" android:layout_height="wrap_content"/> <Buttonandroid:id="@+id/back_button" android:text="@string/back_button" android:layout_marginLeft="20dip" android:layout_marginRight="20dip" android:layout_toLeftOf="@id/ok_button" android:layout_width="wrap_content" android:layout_height="wrap_content"/> </RelativeLayout> </LinearLayout>
5.AndroidManifest.xml
<?xmlversion="1.0"encoding="utf-8"?> <manifestxmlns:android="http://schemas.android.com/apk/res/android" package="com.hemi.rhet"android:versionCode="1"android:versionName="1.0"> <applicationandroid:icon="@drawable/icon"android:label="@string/app_name"> <activityandroid:label="@string/app_name"android:name="LoginWindow"> <intent-filter> <actionandroid:name="android.intent.action.MAIN"/> <categoryandroid:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity> <activityandroid:name="FuncSelector"></activity> <activityandroid:name="PhotoUpload"></activity> <activityandroid:name="ConfigWindow"></activity> </application> <uses-sdkandroid:minSdkVersion="5"/> <uses-permissionandroid:name="android.permission.INTERNET"/> <uses-permissionandroid:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission> </manifest>
Android拍照上传程序的Servlet程序样例
UploadFileServlet.java:
packagecom.hemi.rhet.servlet;
importjava.io.*;
importjava.net.InetAddress;
importjava.net.UnknownHostException;
importjava.sql.SQLException;
importjava.text.SimpleDateFormat;
importjava.util.*;
importjavax.servlet.*;
importjavax.servlet.http.*;
//importorg.apache.commons.fileupload.*;
//importorg.apache.commons.fileupload.disk.DiskFileItemFactory;
//importorg.apache.commons.fileupload.servlet.ServletFileUpload;
//importorg.apache.commons.lang.time.DateUtils;
importorg.apache.log4j.Logger;
//importorg.apache.struts2.ServletActionContext;
publicclassUploadFileServletextendsHttpServlet
{
privatestaticLoggerlog=Logger.getLogger(UploadFileServlet.class);
privatestaticfinalStringOBLIQUE_LINE="/";
privatestaticfinalStringOPPOSITE_OBLIQUE_LINE="////";
privatestaticfinalStringWEBPOSITION="webapps";
privatestaticfinalStringSBPATH="UploadedFiles/";
Fileoutdir=null;
Fileoutfile=null;
FileOutputStreamfos=null;
BufferedInputStreambis=null;
byte[]bs=newbyte[1024];
StringuploadFName=null;
StringorderNo=null;
StringuserId=null;
StringattachType="2";
publicvoidinit()throwsServletException
{
//if(log.isDebugEnabled())
//{
//log.debug("进入init()方法!!");
//}
}
publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsIOException,ServletException
{
doPost(request,response);
}
publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsIOException,ServletException
{
Stringroot=this.getServletContext().getRealPath("/");
root=root.replaceAll("////","/");
try
{
StringBufferdestFName=newStringBuffer();
destFName.append(getRealDir(root)).append(SBPATH);
outdir=newFile(destFName.toString());
request.setCharacterEncoding("UTF-8");
uploadFName=request.getParameter("filename");//nameofuploadedfile
uploadFName=request.getHeader("filename");
if(isEmpty(uploadFName))uploadFName="filename.jpg";
//orderNo=request.getParameter("orderno");//idoftheorderorworksheet
//userId=request.getParameter("userid");//idoftheuserwhouploadthefile
//attachType=request.getParameter("attach_type");//typeofattachment,refertofile.FileBean'sdefinition
Stringdesc=request.getParameter("desc");//descriptionofuploadedfile
if(desc==null)desc="";
if(true)
{
destFName.append(getDatedFName(uploadFName));
outfile=newFile(destFName.toString());
bis=newBufferedInputStream(request.getInputStream());
uploadFile();
//response.getWriter().write("0");//success
response.setHeader("resultcode","0");
}
elseif(desc.length()>400/2){
//response.getWriter().write("3");//illegaldescription
response.setHeader("resultcode","3");
}
else
{
if(log.isDebugEnabled())
{
log.debug("调用格式错误!");
}
response.sendError(100,"参数错误!");
//response.getWriter().write("1");
response.setHeader("resultcode","1");//parametererror
//return;
}
}catch(SQLExceptione){
if(log.isDebugEnabled()){
log.debug(e);
}
//response.getWriter().write("6");//failureofinserttodatabase
response.setHeader("resultcode","6");
}catch(Exceptione){
if(log.isDebugEnabled()){
log.debug(e);
}
//response.getWriter().write("7");//failure
response.setHeader("resultcode","7");
}finally{
if(null!=bis)
bis.close();
if(null!=fos)
fos.close();
}
}
privatevoiduploadFile()throwsIOException
{
if(log.isDebugEnabled())
{
log.debug("outdir:"+outdir.getPath());
log.debug("outfile:"+outfile.getPath());
}
if(!outdir.exists())
outdir.mkdir();
if(!outfile.exists())
outfile.createNewFile();
fos=newFileOutputStream(outfile);
inti;
while((i=bis.read(bs))!=-1)
{
fos.write(bs,0,i);
}
}
publicstaticStringgetDatedFName(Stringfname){
StringBufferresult=newStringBuffer();
SimpleDateFormatdf=newSimpleDateFormat("yyMMddHHmmss");
StringdateSfx="_"+df.format(newDate());
intidx=fname.lastIndexOf('.');
if(idx!=-1){
result.append(fname.substring(0,idx));
result.append(dateSfx);
result.append(fname.substring(idx));
}else{
result.append(fname);
result.append(dateSfx);
}
returnresult.toString();
}
publicstaticStringgetUrlFName(Stringfname,HttpServletRequestrequest){
Stringresult="";
if(isEmpty(fname))returnresult;
try{
if(fname.startsWith("http://")){
result=fname;
}else{
//HttpServletRequestrequest=ServletActionContext.getServletContext().getRgetRequest();
//UserAndOrganAndRoleuser=(UserAndOrganAndRole)request.getSession().getAttribute("user");
Stringip=request.getServerName();
intport=request.getServerPort();
result=fname.substring(fname.indexOf(UploadFileServlet.SBPATH));
StringBuffertmpBuff=newStringBuffer();
tmpBuff.append("http://").append(ip).append(":").append(port).append(OBLIQUE_LINE).append(result);
//Sample:http://localhost:8083/UploadedFiles/IMAGE_067_100222102521.jpg
result=tmpBuff.toString();
}
}catch(Exceptionex){
ex.printStackTrace();
}
System.out.println("resultis:"+result);
returnresult;
}
publicstaticbooleanisEmpty(Stringstr){
return((str==null)||(str.length()==0));
}
/**
*MethodgetRealDirsearchwebappsposition
*
*@paramdespath
*
*@return
*
*/
privateStringgetRealDir(StringnewFileNameRoot)throwsException{
if(newFileNameRoot==null)
thrownewException("getrealdirfailed!");
intdp=newFileNameRoot
.lastIndexOf(OBLIQUE_LINE);
if(dp==-1)
thrownewException("invalidpath!");
intdpbefore=newFileNameRoot.lastIndexOf(
OBLIQUE_LINE,dp-1);
if(dpbefore==-1)
thrownewException("invalidpath!");
StringneedSubStr=newFileNameRoot.substring(dpbefore+1,dp);
StringnextStr=newFileNameRoot.substring(0,dpbefore+1);
if(!needSubStr.trim().equals(WEBPOSITION)){
returngetRealDir(nextStr);
}else
returnnewFileNameRoot;
}
publicstaticvoidmain(String[]args)
{
}
}
web.xml:
<?xmlversion="1.0"encoding="UTF-8"?> <web-appversion="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <servlet> <servlet-name>Upload</servlet-name> <servlet-class>com.hemi.rhet.servlet.UploadFileServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>Upload</servlet-name> <url-pattern>/system/fileUpload</url-pattern> </servlet-mapping> </web-app>
更多关于Android相关内容感兴趣的读者可查看本站专题:《Android拍照与图片处理技巧总结》、《Android开发入门与进阶教程》、《Android多媒体操作技巧汇总(音频,视频,录音等)》、《Android基本组件用法总结》、《Android视图View技巧总结》、《Android布局layout技巧总结》及《Android控件用法总结》
希望本文所述对大家Android程序设计有所帮助。