Mediaprovider无法删除audio文件

MediaProvider.delete不会删除audio相关的文件。

使用mediaprovider.delete的方法删除文件。对于audio文件,真实文件不会被删除。重启手机后,文件又会再出现。

Uri uri = MediaStore.Files.getContentUri("external");

mContext.getContentResolver().delete(uri, selection, selectionArgs);

从代码上看,对于IMAGE,VIDEO mediaproivder在删除数据库记录以后,会主动删除文件,但是对于audio文件,......

MixerThreads

threadloop

正常的音频处理时,会在threadLoop循环内不断的进行混音与音频输出,其中分为三个步骤:

混音前的准备工作,prepareTracks_l

混音,threadLoop_mix

音频输出,threadLoop_write

prepareTracks_l

准备混音的过程中,主要的目的有三个:

设置混音所需要的参数,包括:音量,混音的源buffer,混音目的buffer,音频格式,是否重采样等。

删除被加入tracksToRemove的track

返回当前状态mMixerStatus

threadLoop_mix

在prepareTrack_l返回了mMi......

铃声相关的那些事

预置铃声

原生的android是只支持用户设置系统自带的那些铃声。我们叫预置铃声。

预置铃声是怎么集成的呢?

在手机里,铃声的路径都保存在/system/media/audio/ 下面。

在代码中,是怎么编译到手机中的呢?

首先,在build/target/product/full_base.mk:

$(call inherit-product-if-exists, frameworks/base/data/sounds/AllAudio.mk)

继续找AllAudio.mk这个文件:

LOCAL_PATH := frameworks/base/data/sounds

PRODUCT......

音量调节的流程

亮屏流程

PhoneWindow.onKeyDown:

if (mMediaController != null) {

mMediaController.adjustVolume(direction, AudioManager.FLAG_SHOW_UI);

} else {

//如果应用没有注册mediacontroller,那么会走下面的流程

//如果mVolumeControlStreamType已被指定,只会调节对应的stream,否则默认是default。

//可通过Activity.setVolumeControlStreamType()来设置

......

《人间失格》

人间失格的意思是丧失为人的资格。

在被嫌弃的松子的一生里,有一句很有名的台词,是“生而为人,对不起。”这句话,一度被人认为是出自太宰治的《人间失格》这本书里,不过我看完以后,没有发现。后来百度了一下,应该是出自他的另一本书《二十世纪旗手》,关于这句话的出处,还有一种说法,不知真伪。见:不是太宰治说的——“生而为人,我恨抱歉”

太宰治真的是很爱小山初代。

在现实中小山初代外遇,但是太宰治想到的方法只是跟她一起去温泉自杀。为了她,也放弃了留洋。并且在死前的作品中谈及此事,也没有表达过后悔之情。在人间失格里,小山初代对应的就是良子。太宰治把良子塑造成一个单纯,有着无瑕信任感的人。良子的遭遇是被人......