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

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

Intent intent = newIntent("android.media.action.IMAGE_CAPTURE");

startActivity(intent);

录音系统架构

1.png

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

public class MainActivity extends Activity {

    private TextView tv;

    private MediaRecorder mr;

    private Handler mHandelr = new Handler();

    private MyTask m;

    private int time;

    private Button bt_stop;

    private Button bt_start;

    /** Called when the activity is first created. */

    @Override

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

        tv = (TextView)findViewById(R.id.tv_time);

        bt_start = (Button)findViewById(R.id.bt_start);

        bt_stop = (Button)findViewById(R.id.bt_stop);

        mr = new MediaRecorder();

    }

    public void start(View v){

        try {

            // 重新设置

            mr.reset();

            // 指定声音来源-->>麦克风

            mr.setAudioSource(MediaRecorder.AudioSource.MIC);

            // 指定文件输出的格式

            mr.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);

            // 指定音频的编码格式

            mr.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);

            // 存放的文件

               File file = newFile(Environment.getExternalStorageDirectory(),System.currentTimeMillis()+".3gp");

            // 指定文件输出的路径

            mr.setOutputFile(file.getAbsolutePath());

            // 准备

            mr.prepare();

            // 开始刻录

            mr.start();

            m = new MyTask();

            mHandelr.post(m);

            bt_start.setText("录音中....");

            

            

        } catch (Exception e) {

            // TODO: handle exception

        }

    }

    private class MyTask implements Runnable{

        @Override

        public void run() {

            // TODO Auto-generated methodstub

            mHandelr.postDelayed(this, 1000);

            time++;

            tv.setText(time + "秒");

        }

        

    }

    public void stop(View v){

        mr.stop();

        mHandelr.removeCallbacks(m);

        bt_start.setText("录音");

    }

}

文件上传

导入第三方jar 2.png

Android客户端

public void upload(View v) {

        try {

        HttpClient httpClient = new DefaultHttpClient();

        // 请求指定URL

        String uri = "http://10.0.2.2:8081/test_2_9_service/upload.action";

        HttpPost post = new HttpPost(uri);

        String fileName = tv_name.getText().toString();

        // 创建待处理的文件

        FileBody bin = new FileBody(new File(Environment.getExternalStorageDirectory(),fileName));

        // 创建待处理的表单域内容文本

        StringBody comment = new StringBody(fileName);

        // 对请求的表单域进行填充

        MultipartEntityreqEntity = new MultipartEntity();

        

        reqEntity.addPart("upload",bin);

        reqEntity.addPart("uploadFileName",comment);

        // 设置请求

        post.setEntity(reqEntity);

        // 执行

        HttpResponse response =httpClient.execute(post);

        int code = response.getStatusLine().getStatusCode();

        if (code == 200) {

            Toast.makeText(this"O了", 200).show();

            

        }

        

        } catch (Exception e) {

            // TODO Auto-generated catchblock

            e.printStackTrace();

        }

        

    }

Web服务端

try {

             // 指定文件存放位置

            String path = ServletActionContext.getRequest().getRealPath("upload");

            System.out.print(path);

            // 文件存放目录

            File dir = new File(path);

            if(!dir.exists())

            {

                dir.mkdirs();

            }

            // 要保存文件

            File saveFile = new File(dir,uploadFileName);

            // struts2框架得到的文件流

            FileInputStream fis = new FileInputStream(upload);

            // 要输出的文件流

            FileOutputStream fos = newFileOutputStream(saveFile);

            

            byte[] buffer = new byte[1024];

            int len = 0;

            while ((len = fis.read(buffer))!= -1) {

                 fos.write(buffer, 0, len);

               

            }

            fos.close();

            fis.close();

            // 上传成功提示

            ServletActionContext.getResponse().getWriter().print("上传成功");

课后问题

激活系统已经存在的组件  

使用intent

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

Intent intent = newIntent("android.media.action.IMAGE_CAPTURE");

startActivity(intent);

MediaRecoder如何使用

mediaRecorder.reset();//重新设置

mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);设置麦克风

mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);//设置输出格式

mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);//设置音频编码Encoder

mediaRecorder.setOutputFile(path);//设置音频文件保存路径

mediaRecorder.prepare();//准备录制

mediaRecorder.start();//开始录制

//停止录音和释放资源

mediaRecorder.stop();

mediaRecorder.release();

HttpClient4.0来实现文件的上传

HttpClient httpClient = newDefaultHttpClient();

              // 请求指定URL

              String uri ="http://10.0.2.2:8081/test_2_9_service/upload.action";

              HttpPost post = new HttpPost(uri);

              String fileName =tv_name.getText().toString();

              // 创建待处理的文件

              FileBody bin = new FileBody(newFile(Environment.getExternalStorageDirectory(),fileName));

              // 创建待处理的表单域内容文本

              StringBody comment = new StringBody(fileName);

              // 对请求的表单域进行填充

              MultipartEntity reqEntity = newMultipartEntity();

              

              reqEntity.addPart("upload",bin);

              reqEntity.addPart("uploadFileName",comment);

              // 设置请求

              post.setEntity(reqEntity);

              // 执行

              HttpResponse response = httpClient.execute(post);

              int code =response.getStatusLine().getStatusCode();

              if (code == 200) {

                     Toast.makeText(this,"O",200).show();

                     

              }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值