当前位置:  编程技术>移动开发
本页文章导读:
    ▪运用Intent启动常用的应用与服务        使用Intent启动常用的应用与服务 以下ATAAW.COM列举了一些在Android中常用的Intent启动服务,当执行startActivity时候,Android将会根据Intent绑定的信息寻找最合适的启动程序来接应,并执行程序以完.........
    ▪ AudioRecord 释放资源异常(进程意外中断)        AudioRecord 释放资源错误(进程意外中断) 释放资源 即AudioRecord.release()方法,前两天自己随手想到的一个函数,写入还真有,而且正是想要的方法--释放当前占用的资源,但是在使用中可能遇.........
    ▪ 在同一个tab中展示新的activitiy。支持后退功能       在同一个tab中显示新的activitiy。支持后退功能 http://blog.henriklarsentoft.com/2010/07/android-tabactivity-nested-activities/   妈的 这个是所有方案最给力的.   ......

[1]运用Intent启动常用的应用与服务
    来源: 互联网  发布时间: 2014-02-18
使用Intent启动常用的应用与服务

以下ATAAW.COM列举了一些在Android中常用的Intent启动服务,当执行startActivity时候,Android将会根据Intent绑定的信息寻找最合适的启动程序来接应,并执行程序以完成意图的实现。

打开浏览器显示网页: 
Uri uri = Uri.parse("http://www.ataaw.com"); 
Intent intent  = new Intent(Intent.ACTION_VIEW,uri); 
startActivintenty(intent);

由地图参数显示地图: 
Uri uri = Uri.parse("geo:38.899533,-77.036476"); 
Intent intent = new Intent(Intent.Action_VIEW,uri); 
startActivintenty(intent);

拨打电话,调用拨号程序: 
Uri uri = Uri.parse("tel:13800138000"); 
Intent intent = new Intent(Intent.ACTION_DIAL, uri);  
startActivintenty(intent); 

调用发送短信的程序发送SMS/MMS 
Intent intent = new Intent(Intent.ACTION_VIEW);   
intent.putExtra("sms_body", "ATAAW.COM");   
intent.setType("vnd.android-dir/mms-sms");   
startActivintenty(intent); 

调用短信程序发送短信 
Uri uri = Uri.parse("smsto:13800138000");   
Intent intent = new Intent(Intent.ACTION_SENDTO, uri);   
intent.putExtra("sms_body", "ATAAW.COM");   
startActivintenty(intent); 

调用彩信服务发送彩信 
Uri uri = Uri.parse("content://media/external/images/media/exp");   
Intent intent = new Intent(Intent.ACTION_SEND);   
intent.putExtra("sms_body", "ATAAW.COM");   
intent.putExtra(Intent.EXTRA_STREAM, uri);   
intent.setType("image/png");   
startActivintenty(intent);

启动邮件应用程序发送Email 
Uri uri = Uri.parse("mailto:ataaw.com@gmail.com"); 
Intent intent = new Intent(Intent.ACTION_SENDTO, uri); 
startActivintenty(intent);

Intent intent = new Intent(Intent.ACTION_SEND);   
intent.putExtra(Intent.EXTRA_EMAIL, "android.sz@live.com");   
intent.putExtra(Intent.EXTRA_TEXT, "邮件内容。");   
intent.setType("text/plain");   
startActivintenty(Intent.createChooser(intent, "Choose Email Client")); 

Intent intent=new Intent(Intent.ACTION_SEND);     
String[] tos={"ataaw.com@gmail.com"};     
String[] ccs={"cc@ataaw.com"};     
intent.putExtra(Intent.EXTRA_EMAIL, tos);     
intent.putExtra(Intent.EXTRA_CC, ccs);     
intent.putExtra(Intent.EXTRA_TEXT, "邮件内容。");     
intent.putExtra(Intent.EXTRA_SUBJECT, "邮件主题");     
intent.setType("message/rfc822");     
startActivintenty(Intent.createChooser(intent, "Choose Email Client"));  

添加邮件附件内容 
Intent intent = new Intent(Intent.ACTION_SEND);   
intent.putExtra(Intent.EXTRA_SUBJECT, "主题");   
intent.putExtra(Intent.EXTRA_STREAM, "file:///sdcard/ataaw.mp3");   
sendIntent.setType("audio/mp3");   
startActivintenty(Intent.createChooser(intent, "Choose Email Client"));

播放mp4多媒体文件 
Intent intent = new Intent(Intent.ACTION_VIEW); 
Uri uri = Uri.parse("file:///sdcard/ataaw.mp3"); 
intent.setDataAndType(uri, "audio/mp3"); 
startActivintenty(intent);


    
[2] AudioRecord 释放资源异常(进程意外中断)
    来源: 互联网  发布时间: 2014-02-18
AudioRecord 释放资源错误(进程意外中断)

释放资源 即AudioRecord.release()方法,前两天自己随手想到的一个函数,写入还真有,而且正是想要的方法--释放当前占用的资源,但是在使用中可能遇到各种各样的问题,不适用它问题就更严重了。

 

目前很多网上关于AudioRecord的讲解都没有考虑release这个方法,或者google code上面一些方法不需要release资源。但是在用的时候,尤其来电时释放mic资源是一种必须的需求,所以还是要用到release方法释放mic资源。

 

个人感觉各式各样的网络流行版本中,http://blog.csdn.net/zhjp4295216/archive/2010/11/09 /5996735.aspx这个还是比较靠谱的一个,但是它说的释放mic资源根本无法完全释放,会在电话中出现断断续续的情况。但对于使用可以作为一个参照版本,还是不错。

 

先看看api上的介绍:
public void release ()
Since: API Level 3

Releases the native AudioRecord resources. The object can no longer be used and the reference should be set to null after a call to release()

 

你一定觉得这个解释非常恼火,起码我觉得是的。根据我使用的结果应该意思是:

释放之后这个对象不能再被使用,而且引用必须变null。像废话,就是翻译嘛,但是意思不仅仅是翻译。

两种最基本的错误方式:

1。在一个线程里面处理录音,然后继承Thread的类中提供方法release,然后电话来之前先stop,然后release。

2。像那个网址里面,但是在run最后加上release。电话来时、或者后台运行时先pause,然后start

 

据这两个例子,肯定都是错的。先说问题

1。先stop或suspend再release,本质上对于audiorecord的操作还没有结束,只是要求强制关闭(stop方法本身不安全)。还是会继续占用mic,所以释放就会造成线程意外结束,系统报出线程意外中断的错误。这就是the reference should be set to null。虽然来电的情况系统会自动为你再次开启,但是总不至于每次都让用户去看到程序中断吧。

2。先pause掉之后,程序正常隐蔽,但是由于程序还会在start再次调用record,虽然是重新生成一个新的。这就是object can no longer be used and the reference should be set to null。所以在重新回到程序时会抛出相同错误。

 

这里已经很明显了,就是在实例程序的run结尾加上ar.release();。 来电结束时重新生成一个新的线程,让原来的线程结束去吧!这样就可以再来电和后台时成功释放mic了,希望解释这两个错误能让你了解那句话和系统抛出的这个纠结的错误。

 

另外,那个实例有个错误,大家想必看到了吧,还是说一下,网上错误太多了:

public void start() {
        // 在调用本线程的 Activity 的 onResume 里调用,以便 Activity 恢复后继续获取麦克风输入音量
        if (!isRun) {
            super.start();
            isRun = true;
        }
    }

 

附:很多录音在模拟器是无法测试的,所以请在真机上测试,也所以才有这个纠结的不好找到源头的错误。

private final static int CHANNEL_MODE = AudioFormat.CHANNEL_CONFIGURATION_MONO;
private final static int ENCODING = AudioFormat.ENCODING_PCM_8BIT;

recorder = new AudioRecord(MediaRecorder.AudioSource.MIC, RATE,
                CHANNEL_MODE, ENCODING, CHUNK_SIZE_IN_SAMPLES * 2);

 

我记得貌似只支持这个,频率是最低的吧 起码44100不支持,你可以用AudioRecord.getMinBufferSize这个方法测试一下。有个外国的网站上有人统计过,但是找不到了,忘了保存起来了,只能分享这些了,呵呵。好了,就这些


    
[3] 在同一个tab中展示新的activitiy。支持后退功能
    来源: 互联网  发布时间: 2014-02-18
在同一个tab中显示新的activitiy。支持后退功能

http://blog.henriklarsentoft.com/2010/07/android-tabactivity-nested-activities/

 

妈的 这个是所有方案最给力的.

 


    
最新技术文章:
▪Android开发之登录验证实例教程
▪Android开发之注册登录方法示例
▪Android获取手机SIM卡运营商信息的方法
▪Android实现将已发送的短信写入短信数据库的...
▪Android发送短信功能代码
▪Android根据电话号码获得联系人头像实例代码
▪Android中GPS定位的用法实例
▪Android实现退出时关闭所有Activity的方法
▪Android实现文件的分割和组装
▪Android录音应用实例教程
▪Android双击返回键退出程序的实现方法
▪Android实现侦听电池状态显示、电量及充电动...
▪Android获取当前已连接的wifi信号强度的方法
▪Android实现动态显示或隐藏密码输入框的内容
▪根据USER-AGENT判断手机类型并跳转到相应的app...
▪Android Touch事件分发过程详解
▪Android中实现为TextView添加多个可点击的文本
▪Android程序设计之AIDL实例详解
▪Android显式启动与隐式启动Activity的区别介绍
▪Android按钮单击事件的四种常用写法总结
▪Android消息处理机制Looper和Handler详解
▪Android实现Back功能代码片段总结
▪Android实用的代码片段 常用代码总结
▪Android实现弹出键盘的方法
▪Android中通过view方式获取当前Activity的屏幕截...
▪Android提高之自定义Menu(TabMenu)实现方法
▪Android提高之多方向抽屉实现方法
▪Android提高之MediaPlayer播放网络音频的实现方法...
▪Android提高之MediaPlayer播放网络视频的实现方法...
▪Android提高之手游转电视游戏的模拟操控
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3