解决:短信添加录音附件,录音,没有录音时间限制,超出彩信最大限制也正常录音

【测试步骤】

短信添加录音附件,录音

【测试结果】

没有录音时间限制,超出彩信最大限制也正常录音

【预期结果】

应该有录音时间限制

首先分析是否因在彩信中没有没有在Intent中封装彩信剩余大小,定位到ComposeMessageActivity类的addAttachment()方法中:

private void addAttachment(int type, boolean replace) {

// Calculate the size of the current slide if we‘re doing a replace so the

// slide size can optionally be used in computing how much room is left for an attachment.

int currentSlideSize = 0;

SlideshowModel slideShow = mWorkingMessage.getSlideshow();

if (replace && slideShow != null) {

WorkingMessage.removeThumbnailsFromCache(slideShow);

SlideModel slide = slideShow.get(0);

currentSlideSize = slide.getSlideSize();

}

switch (type) {

case AttachmentTypeSelectorAdapter.ADD_IMAGE:

MessageUtils.selectImage(this, REQUEST_CODE_ATTACH_IMAGE);

break;

case AttachmentTypeSelectorAdapter.TAKE_PICTURE: {

MessageUtils.capturePicture(this, REQUEST_CODE_TAKE_PICTURE);

break;

}

case AttachmentTypeSelectorAdapter.ADD_VIDEO:

MessageUtils.selectVideo(this, REQUEST_CODE_ATTACH_VIDEO);

break;

case AttachmentTypeSelectorAdapter.RECORD_VIDEO: {

long sizeLimit = computeAttachmentSizeLimit(slideShow, currentSlideSize);

if (sizeLimit > 0) {

MessageUtils.recordVideo(this, REQUEST_CODE_TAKE_VIDEO, sizeLimit);

} else {

Toast.makeText(this,

getString(R.string.message_too_big_for_video),

Toast.LENGTH_SHORT).show();

}

}

break;

case AttachmentTypeSelectorAdapter.ADD_SOUND:

MessageUtils.selectAudio(this, REQUEST_CODE_ATTACH_SOUND);

break;

case AttachmentTypeSelectorAdapter.RECORD_SOUND:

long sizeLimit = computeAttachmentSizeLimit(slideShow, currentSlideSize);

MessageUtils.recordSound(this, REQUEST_CODE_RECORD_SOUND, sizeLimit);

break;

case AttachmentTypeSelectorAdapter.ADD_SLIDESHOW:

editSlideshow();

break;

case AttachmentTypeSelectorAdapter.ADD_CONTACT_AS_TEXT:

pickContacts(MultiPickContactsActivity.MODE_INFO,

replace ? REQUEST_CODE_ATTACH_REPLACE_CONTACT_INFO

: REQUEST_CODE_ATTACH_ADD_CONTACT_INFO);

break;

case AttachmentTypeSelectorAdapter.ADD_CONTACT_AS_VCARD:

pickContacts(MultiPickContactsActivity.MODE_VCARD,

REQUEST_CODE_ATTACH_ADD_CONTACT_VCARD);

break;

default:

break;

}

}

从以上代码中发现,这里的Intent中已经封装了彩信剩余大小的控制,因此该问题进入录音机界面进行分析:

经过分析发现,录音机应用并没有从Intent中取出对录音文件大小的控制。

修改方法:LemediaRecorder类的onCreate中进行修改:

public void onCreate(Bundle icycle) {

super.onCreate(icycle);

stopRecorder();

mSharedPreferences = getSharedPreferences("storage_Path", Context.MODE_PRIVATE);

mPrefsStoragePathEditor = mSharedPreferences.edit();

mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);

Intent i = getIntent();

if (i != null) {

intentRecorder = true;

            final String EXTRA_MAX_BYTES

= android.provider.MediaStore.Audio.Media.EXTRA_MAX_BYTES;

mMaxFileSize = i.getLongExtra(EXTRA_MAX_BYTES, -1);

}

if (AUDIO_ANY.equals(mRequestedType) || ANY_ANY.equals(mRequestedType)) {

mRequestedType = AUDIO_AMR;

}

mPath = mSharedPreferences.getInt("path", mPath);

//mRequestedType = mSharedPreferences.getString("requestedType", mRequestedType);

mRequestedType = AUDIO_AMR;

//mFileType = mSharedPreferences.getInt("fileType", mFileType);

mFileType = 0;

mStoragePath = mSharedPreferences.getString("storagePath", mStoragePath);

if (!mWAVSupport && mRequestedType == AUDIO_WAVE_2CH_LPCM) {

mRequestedType = AUDIO_AMR;

mFileType = 0;

}

setContentView(R.layout.main);

mAudioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE);

mRecorder = new Recorder();

mRecorder.setOnStateChangedListener(this);

mRemainingTimeCalculator = new RemainingTimeCalculator(LemediaRecorder.this);

PowerManager pm

= (PowerManager) getSystemService(Context.POWER_SERVICE);

mWakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK,

"LemediaRecorder");

initResourceRefs();

mRecorderStop = false;

mDataExist = false;

setResult(RESULT_CANCELED);

registerExternalStorageListener();

if (icycle != null) {

Bundle recorderState = icycle.getBundle(RECORDER_STATE_KEY);

if (recorderState != null) {

mRecorder.restoreState(recorderState);

mSampleInterrupted = recorderState.getBoolean(SAMPLE_INTERRUPTED_KEY, false);

mMaxFileSize = recorderState.getLong(MAX_FILE_SIZE_KEY, -1);

int showAndExit = recorderState.getInt(DIALOG_STATE_KEY);

mLastFileName = recorderState.getString(LAST_FILE_NAME_KEY);

if (showAndExit != -1) showDialogAndExit(showAndExit == 1);

}

}

mTelephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);

mPhoneStateListener = getPhoneStateListener();

String ssrRet = mAudioManager.getParameters("ssr");

if (ssrRet.contains("=true")) {

bSSRSupported = true;

} else {

bSSRSupported = false;

}

updateUi();

}

问题OK,搞定!

解决:短信添加录音附件,录音,没有录音时间限制,超出彩信最大限制也正常录音,布布扣,bubuko.com

时间: 2024-12-28 08:09:44

解决:短信添加录音附件,录音,没有录音时间限制,超出彩信最大限制也正常录音的相关文章

图形验证码实现方案(解决短信轰炸问题)

最近收到leader的一个邮件说我们的项目有短信轰炸风险.顿时让一个做技术开发的人为之一颤.今天给大家介绍一个解决这个问题的使用工具. 就是谷歌的 kaptcha 进行验证码生成和校验.闲话少说直接上代码. 1. 首先下载一个工具包 <dependency> <groupId>com.github.axet</groupId> <artifactId>kaptcha</artifactId> <version>0.0.9</ve

解决在转发一条内容为满的彩信,删除主题FWD,发送的时候提示转化为短信。

问题描述: 1.长按一条输入内容为满的彩信,选择转发 2.输入联系人-删除主题FWD-发送 测试结果为:提示正转化为短信(见附件) 预期结果为:不应该有提示,应该还是彩信 测试结果图为: 根据提示的Toast内容"Converting to text message..."进行代码最终进行代码定位到ComposeMessageActivity类的showConvertToSmsToast()方法,并打印堆栈: private void showConvertToSmsToast() {

短信轰炸的原理及解决思路

大部分的网站和移动应用在注册时使用手机号码作为平台账号,利用短信验证来鉴别手机号是否属于用户本人.因此,我们在各类平台的注册场景经常见到短信验证.然而,这种验证工具背后却暗藏许多安全隐患.其中最主要的一种就是黑产利用各类平台的短信验证接口进行短信轰炸. 短信轰炸造成短信通道阻塞.企业品牌形象受损.短信费用被大量恶意消耗等负面影响,若被用户投诉,还将导致短信接口封禁,直接影响网站正常业务. 什么是短信轰炸? 短信轰炸是通过各平台获取短信验证码,达到恶意发送垃圾短信的工具.这种"短信炸弹"

短信开发系列(三):短信接收引擎

短信开发系列目录: 短信开发系列(一):GSM手机短信开发初探短信开发系列(二):GSM手机短信开发之短信解码短信开发系列(三):短信接收引擎 之前写了短信接收处理的一些内容,今年事情实在太多了,就停顿了这么一大段的时间.接下来会继续完成相关的内容. 今天先写用之前写的短信类库的一个应用,短信接收引擎.可以用在处理一些短信的提醒:作为前面两篇文章的一个实战运用,可以作为一个多线程.委托和事件.串口等方面知识的一个综合运用. 先来分析一下整个程序的流程: - 启动线程 - 定时运行线程主函数 -

Android5.0框架层短信接收过程分析

本文分析使用的是android5.0的源代码,涉及的相关文件: frameworks\opt\telephony\src\java\com\android\internal\telephony\RIL.java frameworks\base\core\java\com\android\internal\util\StateMachine.java frameworks\opt\telephony\src\java\com\android\internal\telephony\InboundSm

如何防范短信接口被恶意调用(被刷)(转)

本文转自:https://zhuanlan.zhihu.com/p/20879468 一.什么是短信轰炸(短信接口被刷) 短信轰炸一般基于 WEB 方式(基于客户端方式的原理与之类似),由两个模块组成,包括:一个前端 Web 网页,提供输入被攻击者手机号码的表单:一个后台攻击页面(如 PHP),利用从各个网站上找到的动态短信 URL 和 前端输入的被攻击者手机号码,发送 HTTP 请求,每次请求给用户发送一个动态短信. - 被攻击者大量接收非自身请求的短信,造成无法正常使用移动运营商业务.- 短

发短信接口

发短信接口 1 import java.io.IOException; 2 import java.io.InputStream; 3 import java.io.OutputStream; 4 import java.net.HttpURLConnection; 5 import java.net.MalformedURLException; 6 import java.net.URL; 7 import java.security.MessageDigest; 8 import java.

Android 监听系统短信广播

使用场景: 1.对系统接收到的短信进行识别,是广告或者是诈骗等 2.对短信内容进行过滤或者是对内容进行提取,比如验证码提取 3.对系统短信进行拦截,连系统自己都不让收到了(不会出现在系统数据里面,也不会有系统短信的通知栏提示) 备注: 1.系统短信广播为有序广播,要拦截的话,需要在注册广播的时候设置广播优先级为最大,不过这种也有风险,如果被其他的应用先拦截了,那么我们将不再收到,使用时需注意. 2.要接到系统短信广播,那么应用必须具备短信读取权限,这对使用者来说可能是一个限制 3.除了短信读取权

解决:更改短信中心号码不能及时更新显示

[测试步骤]: 1.进入短信界面 2.菜单-设置 3.修改短信中心号码(Set the SIM's smsc number) 保存 [测试结果]:提示保存成功,但是号码没有改变,退出重新进入设置才会看到号码更新 [预期结果]:提示保存成功,号码变为修改过的号码 相关Activity:通过Logcat中I/ActivityManager(  896):我们可以定位到该类-MessagingPreferenceActivity: 相关控件:mSmscPrefList.add(pref); 根据分析我