展会信息港展会大全

调用系统相册和拍照,取得返回文件
来源:互联网   发布日期:2015-09-29 10:08:04   浏览:2012次  

导读:这是填写详细资料页的整个代码:涉及调用系统相册和拍照的实现,是通过:1.一个图片的点击事件来触发一个AlertDialog2.AlertDialog 两个选项:拍照和相册选择3.点击不同的选项,触发不同的事件(拍照和相册)4.......

这是填写详细资料页的整个代码:

涉及调用系统相册和拍照的实现,是通过:

1.一个图片的点击事件来触发一个AlertDialog

2.AlertDialog 两个选项:拍照和相册选择

3.点击不同的选项,触发不同的事件(拍照和相册)

4.onActivityResult方法设置返回对象的处理事件

package com.anjoyo.teacher.activity;

import java.io.File;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.IOException;

import java.util.ArrayList;

import java.util.List;

import org.anjoyo.model.User;

import org.apache.http.HttpResponse;

import org.apache.http.NameValuePair;

import org.apache.http.client.HttpResponseException;

import org.apache.http.client.entity.UrlEncodedFormEntity;

import org.apache.http.client.methods.HttpPost;

import org.apache.http.impl.client.DefaultHttpClient;

import org.apache.http.message.BasicNameValuePair;

import org.apache.http.protocol.HTTP;

import org.apache.http.util.EntityUtils;

import org.json.JSONException;

import org.json.JSONObject;

import com.anjoyo.net.AsyncHttpClient;

import com.anjoyo.net.JsonHttpResponseHandler;

import com.anjoyo.net.RequestParams;

import com.anjoyo.teacher.utils.Env;

import com.anjoyo.utils.RequestParamesUtils;

import android.app.Activity;

import android.app.AlertDialog;

import android.app.ProgressDialog;

import android.content.Context;

import android.content.DialogInterface;

import android.content.Intent;

import android.graphics.Bitmap;

import android.graphics.drawable.BitmapDrawable;

import android.os.Bundle;

import android.os.Environment;

import android.provider.MediaStore;

import android.text.TextUtils.StringSplitter;

import android.util.Log;

import android.view.LayoutInflater;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.AdapterView;

import android.widget.AdapterView.OnItemClickListener;

import android.widget.AdapterView.OnItemSelectedListener;

import android.widget.ArrayAdapter;

import android.widget.Button;

import android.widget.EditText;

import android.widget.ImageButton;

import android.widget.ImageView;

import android.widget.LinearLayout;

import android.widget.RadioButton;

import android.widget.RadioGroup;

import android.widget.RadioGroup.OnCheckedChangeListener;

import android.widget.Spinner;

import android.widget.Toast;

/**设计文档:P.4详细资料输入页 ---周韬*/

public class DetailsStudentAty extends Activity {

AsyncHttpClient ahClient;

AsyncHttpClient client = new AsyncHttpClient();

String reson;// 判断上传文件是否成功

String filename;// 上传相片、声音文件成功后返回的文件名

RadioGroup group_sex;

RadioButton man, women;

EditText nameEditText;

LinearLayout linear;

String nameValue,provinceValue,cityValue ,genderValue,avatar;

Button submitButton;

ImageView headPortraitButton;

Spinner sp_province, sp_city, sp_grade;

Context context;

ArrayAdapter<String> adapter;

ArrayAdapter<String> adapter2;

private static final int PHOTO_PICKED_WITH_DATA = 3021;

private static final int CAMERA_WITH_DATA = 3023;

private String[]dataProvince= new String[] { "北京", "上海", "哈尔滨" };

private String[] dataCity = new String[] { "海淀区", "朝阳区", "东城区", "西城区" };

private String[][] pandc = new String[][] {

{ "海淀区", "朝阳区", "东城区", "西城区" },

{ "浦东", "浦西", "浦南", "浦北" },

{ "齐齐哈尔", "牡丹江", "大庆", "伊春", "双鸭山", "鹤岗", "鸡西", "佳木斯", "七台河", "黑河",

"绥化", "大兴安岭" } };

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.write_student_information);

getView();

setListener();

}

private void getView() {

headPortraitButton = (ImageView) findViewById(R.id.bt_touxiang);// 更换头像

submitButton = (Button) findViewById(R.id.Button_tijiao);// 提交

sp_province = (Spinner) findViewById(R.id.p);

sp_city = (Spinner) findViewById(R.id.c);

nameEditText = (EditText) findViewById(R.id.xiangxi_name);

group_sex = (RadioGroup) findViewById(R.id.group);

man = (RadioButton) findViewById(R.id.man);

women = (RadioButton) findViewById(R.id.women);

sp_grade=(Spinner) findViewById(R.id.spinner);

}

private void setListener() {

headPortraitButton.setOnClickListener(headPortrait);

submitButton.setOnClickListener(submit);

sp_grade.setOnItemSelectedListener(grade_0);

sp_province.setOnItemSelectedListener(province);

group_sex.setOnCheckedChangeListener(group_0);

/** Spinner省市二级联动 */

context = this;

adapter = new ArrayAdapter<String>(this,

android.R.layout.simple_spinner_item, dataProvince);

adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

sp_province.setAdapter(adapter);

sp_province.setOnItemSelectedListener(province);

adapter2 = new ArrayAdapter<String>(this,

android.R.layout.simple_spinner_item, dataCity);

adapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

sp_city.setAdapter(adapter2);

}

/** Spinner适配 二级联动*/

private OnItemSelectedListener province = new OnItemSelectedListener() {

public void onItemSelected(AdapterView parent, View v, int position,

long id) {

int pos = sp_province.getSelectedItemPosition();

adapter2 = new ArrayAdapter<String>(context,

android.R.layout.simple_spinner_item, pandc[pos]);

sp_city.setAdapter(adapter2);

}

public void onNothingSelected(AdapterView arg0) {

}

};

/** 更换头像 */

private OnClickListener headPortrait=new OnClickListener() {

@Override

public void onClick(View v) {

final CharSequence[] items = { "相册", "拍照" };

AlertDialog dlg = new AlertDialog.Builder(DetailsStudentAty.this)

.setTitle("选择图片")

.setItems(items, new DialogInterface.OnClickListener() {

public void onClick(DialogInterface dialog, int item) {

// 这里item是根据选择的方式,

if (item == 1) {

//拍照

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

startActivityForResult(intent, 1);

} else {

//相册

Intent intent=new Intent(Intent.ACTION_GET_CONTENT);

intent.addCategory(Intent.CATEGORY_OPENABLE);

intent.setType("image/*");

intent.putExtra("crop", "true");

intent.putExtra("aspectX", 1);

intent.putExtra("aspectY", 1);

intent.putExtra("outputX",128);

intent.putExtra("outputY", 128);

intent.putExtra("return-data", true);

startActivityForResult(intent, 0);

}

}

}).create();

dlg.show();

}

};

/**拍照的onActivityResult方法*/

protected void onActivityResult(int requestCode, int resultCode, Intent data) {

super.onActivityResult(requestCode, resultCode, data);

if (resultCode == Activity.RESULT_OK) {

String sdStatus = Environment.getExternalStorageState();

if (!sdStatus.equals(Environment.MEDIA_MOUNTED)) { // 检测sd是否可用

Log.v("TestFile",

"SD card is not avaiable/writeable right now.");

return;

}

Bundle bundle = data.getExtras();

Bitmap bitmap = (Bitmap) bundle.get("data");// 获取相机返回的数据,并转换为Bitmap图片格式

FileOutputStream b = null;

String timeString = System.currentTimeMillis() + "";

String fileName = Env.tempFileDir + timeString + ".jpg";

try {

b = new FileOutputStream(fileName);

bitmap.compress(Bitmap.CompressFormat.JPEG, 100, b);// 把数据写入文件

} catch (FileNotFoundException e) {

e.printStackTrace();

} finally {

try {

b.flush();

b.close();

} catch (IOException e) {

e.printStackTrace();

}

}

headPortraitButton.setImageBitmap(bitmap);// 将图片显示在ImageView里

headPortraitButton.setTag(fileName);

}

}

protected void doCropPhoto(Bitmap data){

Intent intent = getCropImageIntent(data);

startActivityForResult(intent, PHOTO_PICKED_WITH_DATA);

}

public static Intent getCropImageIntent(Bitmap data) {

Intent intent = new Intent("com.android.camera.action.CROP");

intent.setType("image/*");

intent.putExtra("data", data);

intent.putExtra("crop", "true");

intent.putExtra("aspectX", 1);

intent.putExtra("aspectY", 1);

intent.putExtra("outputX", 128);

intent.putExtra("outputY", 128);

intent.putExtra("return-data", true);

return intent;

}

/**向服务器提交图片*/

public void sendPic() {

String filePath = (String)headPortraitButton.getTag();

File file = new File(filePath);

if (file.exists() && file != null) {

RequestParams requestParams = new RequestParams();

requestParams.put("token", User.currentUser.token);

requestParams.put("file_type", "avatar");

requestParams.put("resize", "128x128");

try {

requestParams.put("uploads", file);

} catch (FileNotFoundException e1) {

// TODO Auto-generated catch block

e1.printStackTrace();

}

client.post("http://shishuo.sinaapp.com/upload.php?" + "token="

+ User.currentUser.token + "&file_type=avatar",

requestParams, new JsonHttpResponseHandler() {

@Override

public void onFailure(Throwable error, String content) {

super.onFailure(error, content);

}

@Override

public void onSuccess(JSONObject response) {

super.onSuccess(response);

try {

reson = response.getString("result");

if (reson.equals("success")) {

filename = response.getString("filename");

Toast.makeText(DetailsStudentAty.this, "向服务器提交图片成功!",Toast.LENGTH_LONG).show();

submitInformation();

}

else{

Toast.makeText(DetailsStudentAty.this, "向服务器提交图片失败!",Toast.LENGTH_LONG).show();

}

} catch (JSONException e) {

e.printStackTrace();

}

}

@Override

public void onFinish() {

super.onFinish();

}

@Override

public void onStart() {

super.onStart();

}

});

}

}

/** 提交 */

private OnClickListener submit=new OnClickListener() {

@Override

public void onClick(View v) {

final ProgressDialog rd = ProgressDialog.show(

DetailsStudentAty.this, "正在提交", "请稍候...");

new Thread() {

@Override

public void run() {

try {

Thread.sleep(1000);

} catch (Exception e) {

// TODO: handle exception

} finally {

rd.dismiss();

}

}

}.start();

sendPic();

//submitInformation();

}

};

/** 男女單選 */

private OnCheckedChangeListener group_0=new OnCheckedChangeListener() {

@Override

public void onCheckedChanged(RadioGroup group, int checkedId) {

if (checkedId == man.getId()) // 获得性别

{

String gender = man.getText().toString();

} else {

String gender = women.getText().toString();

}

}

};

/**年级*/

private OnItemSelectedListener grade_0=new OnItemSelectedListener() {

@Override

public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2,

long arg3) {

}

@Override

public void onNothingSelected(AdapterView<?> arg0) {

}

};

/**向服务器提交该页所有信息*/

private void submitInformation() {

ahClient = new AsyncHttpClient();

Intent intent =getIntent();

String tokenString =User.currentUser.token;

String nameValue = nameEditText.getEditableText().toString();// 或得输入框的名字

String provinceValue = sp_province.getSelectedItem().toString();// 获得省的值

String cityValue = sp_city.getSelectedItem().toString();// 获得城市的值

String gender;// 或得性别

String avatarValue=filename;// 获得照片

String gradeValue=sp_grade.getSelectedItem().toString();// 获得年级

RequestParams requestParams = new RequestParams();

requestParams.put("task", "UpdateStudentProfile");

requestParams.put("token", tokenString);

requestParams.put("name", nameValue);

requestParams.put("gender", genderValue);

requestParams.put("avatar", filename);

requestParams.put("province", provinceValue);

requestParams.put("city", cityValue);

requestParams.put("grade", gradeValue);

ahClient.post("http://shishuo.sinaapp.com/apis.php", requestParams,

new JsonHttpResponseHandler() {

@Override

public void onSuccess(JSONObject response) {

super.onSuccess(response);

JSONObject job = response;

String result = null;

try {

result = job.getString("result");

if (result.equals("success")) {

Toast.makeText(DetailsStudentAty.this, "上传该界面信息成功!",

Toast.LENGTH_SHORT).show();

Intent intent = new Intent(DetailsStudentAty.this,

MenuActivity.class);

startActivity(intent);

}

if (result.equals("fail")) {

Toast.makeText(DetailsStudentAty.this,

"上传该界面信息失败!" + response.toString(),

Toast.LENGTH_SHORT).show();

}

} catch (JSONException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

@Override

public void onFailure(Throwable error, String content) {

super.onFailure(error, content);

}

@Override

public void onFinish() {

super.onFinish();

}

@Override

public void onStart() {

// TODO Auto-generated method stub

super.onStart();

}

});

}

}

赞助本站

人工智能实验室

相关热词: 调用系统 相册 拍照

相关内容
AiLab云推荐
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港