Android从零开始(25)(调用系统的相机、录音、上传文件)(新)

调用系统的相机、录音、上传文件调用系统相机

相机

[java] view plain copy print ?
  1. Intent intent = newIntent("android.media.action.IMAGE_CAPTURE");  
  2. startActivity(intent);  
录音系统架构

圆圈里面是状态,双箭头是监听,单箭头是执行


录音

[java] view plain copy print ?
  1. public class MainActivity extends Activity {  
  2.     private TextView tv;  
  3.     private MediaRecorder mr;  
  4.     private Handler mHandelr = new Handler();  
  5.     private MyTask m;  
  6.     private int time;  
  7.     private Button bt_stop;  
  8.     private Button bt_start;  
  9.     /** Called when the activity is first created. */  
  10.     @Override  
  11.     public void onCreate(Bundle savedInstanceState) {  
  12.         super.onCreate(savedInstanceState);  
  13.         setContentView(R.layout.main);  
  14.         tv = (TextView)findViewById(R.id.tv_time);  
  15.         bt_start = (Button)findViewById(R.id.bt_start);  
  16.         bt_stop = (Button)findViewById(R.id.bt_stop);  
  17.         mr = new MediaRecorder();  
  18.     }  
  19.     public void start(View v){  
  20.         try {  
  21.             // 重新设置  
  22.             mr.reset();  
  23.             // 指定声音来源-->>麦克风  
  24.             mr.setAudioSource(MediaRecorder.AudioSource.MIC);  
  25.             // 指定文件输出的格式  
  26.             mr.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);  
  27.             // 指定音频的编码格式  
  28.             mr.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);  
  29.             // 存放的文件  
  30.                File file = newFile(Environment.getExternalStorageDirectory(),System.currentTimeMillis()+".3gp");  
  31.             // 指定文件输出的路径  
  32.             mr.setOutputFile(file.getAbsolutePath());  
  33.             // 准备  
  34.             mr.prepare();  
  35.             // 开始刻录  
  36.             mr.start();  
  37.             m = new MyTask();  
  38.             mHandelr.post(m);  
  39.             bt_start.setText("录音中....");  
  40.               
  41.               
  42.         } catch (Exception e) {  
  43.             // TODO: handle exception  
  44.         }  
  45.     }  
  46.     private class MyTask implements Runnable{  
  47.         @Override  
  48.         public void run() {  
  49.             // TODO Auto-generated methodstub  
  50.             mHandelr.postDelayed(this1000);  
  51.             time++;  
  52.             tv.setText(time + "秒");  
  53.         }  
  54.           
  55.     }  
  56.     public void stop(View v){  
  57.         mr.stop();  
  58.         mHandelr.removeCallbacks(m);  
  59.         bt_start.setText("录音");  
  60.     }  
  61. }  

文件上传

导入第三方jar 


Android客户端

[java] view plain copy print ?
  1. public void upload(View v) {  
  2.         try {  
  3.         HttpClient httpClient = new DefaultHttpClient();  
  4.         // 请求指定URL  
  5.         String uri = "http://10.0.2.2:8081/test_2_9_service/upload.action";  
  6.         HttpPost post = new HttpPost(uri);  
  7.         String fileName = tv_name.getText().toString();  
  8.         // 创建待处理的文件  
  9.         FileBody bin = new FileBody(new File(Environment.getExternalStorageDirectory(),fileName));  
  10.         // 创建待处理的表单域内容文本  
  11.         StringBody comment = new StringBody(fileName);  
  12.         // 对请求的表单域进行填充  
  13.         MultipartEntityreqEntity = new MultipartEntity();  
  14.           
  15.         reqEntity.addPart("upload",bin);  
  16.         reqEntity.addPart("uploadFileName",comment);  
  17.         // 设置请求  
  18.         post.setEntity(reqEntity);  
  19.         // 执行  
  20.         HttpResponse response =httpClient.execute(post);  
  21.         int code = response.getStatusLine().getStatusCode();  
  22.         if (code == 200) {  
  23.             Toast.makeText(this"O了"200).show();  
  24.               
  25.         }  
  26.           
  27.         } catch (Exception e) {  
  28.             // TODO Auto-generated catchblock  
  29.             e.printStackTrace();  
  30.         }  
  31.           
  32.     }  


Web服务端

[java] view plain copy print ?
  1. try {  
  2.              // 指定文件存放位置  
  3.             String path = ServletActionContext.getRequest().getRealPath("upload");  
  4.             System.out.print(path);  
  5.             // 文件存放目录  
  6.             File dir = new File(path);  
  7.             if(!dir.exists())  
  8.             {  
  9.                 dir.mkdirs();  
  10.             }  
  11.             // 要保存文件  
  12.             File saveFile = new File(dir,uploadFileName);  
  13.             // struts2框架得到的文件流  
  14.             FileInputStream fis = new FileInputStream(upload);  
  15.             // 要输出的文件流  
  16.             FileOutputStream fos = newFileOutputStream(saveFile);  
  17.               
  18.             byte[] buffer = new byte[1024];  
  19.             int len = 0;  
  20.             while ((len = fis.read(buffer))!= -1) {  
  21.                  fos.write(buffer, 0, len);  
  22.                  
  23.             }  
  24.             fos.close();  
  25.             fis.close();  
  26.             // 上传成功提示  
  27.             ServletActionContext.getResponse().getWriter().print("上传成功");  

课后问题

激活系统已经存在的组件  

使用intent


怎么调用系统的相机去拍照

[java] view plain copy print ?
  1. Intent intent = newIntent("android.media.action.IMAGE_CAPTURE");  
  2. startActivity(intent);  
  3. MediaRecoder如何使用  
  4. mediaRecorder.reset();//重新设置  
  5. mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);////设置麦克风  
  6. mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);//设置输出格式  
  7. mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);//设置音频编码Encoder  
  8. mediaRecorder.setOutputFile(path);//设置音频文件保存路径  
  9. mediaRecorder.prepare();//准备录制  
  10. mediaRecorder.start();//开始录制  
  11. //停止录音和释放资源  
  12. mediaRecorder.stop();  
  13. mediaRecorder.release();  


HttpClient4.0来实现文件的上传

[java] view plain copy print ?
  1. HttpClient httpClient = newDefaultHttpClient();  
  2.               // 请求指定URL  
  3.               String uri ="http://10.0.2.2:8081/test_2_9_service/upload.action";  
  4.               HttpPost post = new HttpPost(uri);  
  5.               String fileName =tv_name.getText().toString();  
  6.               // 创建待处理的文件  
  7.               FileBody bin = new FileBody(newFile(Environment.getExternalStorageDirectory(),fileName));  
  8.               // 创建待处理的表单域内容文本  
  9.               StringBody comment = new StringBody(fileName);  
  10.               // 对请求的表单域进行填充  
  11.               MultipartEntity reqEntity = newMultipartEntity();  
  12.                 
  13.               reqEntity.addPart("upload",bin);  
  14.               reqEntity.addPart("uploadFileName",comment);  
  15.               // 设置请求  
  16.               post.setEntity(reqEntity);  
  17.               // 执行  
  18.               HttpResponse response = httpClient.execute(post);  
  19.               int code =response.getStatusLine().getStatusCode();  
  20.               if (code == 200) {  
  21.                      Toast.makeText(this,"O了",200).show();  
  22.                        
  23.               }

你可能感兴趣的:(Android从零开始(25)(调用系统的相机、录音、上传文件)(新))