android 播放短信铃声,Android 播放自定义铃声

参考链接:https://www.cnblogs.com/alwaysfirst/p/4004838.html

android播放声音,一种是soundPool,一种是mediaplayer

soundpool 适合播放反映速度要求较高的声效,比如,游戏中的爆炸音效

mediaplay 适合播放时间比较长的声效,比如,游戏中的背景音乐

将自定义的音效文件放到res/raw文件夹下,如果不存在raw目录,创建一个

然后实现添加音效:

public MediaPlayer mPlayer;

private SoundPool mSound;

private HashMapsoundPoolMap;

public static Boolean isRingTone = false;

/**

* 初始化声音

*/

private void InitSounds() {

// 设置播放音效

mPlayer = MediaPlayer.create(getActivity(), R.raw.jb1);    //getActivity()也可以是MainActivity.this

// 第一个参数为同时播放数据流的最大个数,第二数据流类型,第三为声音质量

mSound = new SoundPool(4, AudioManager.STREAM_MUSIC, 100);

soundPoolMap = new HashMap();

soundPoolMap.put(1, mSound.load(getActivity(), R.raw.jb2, 1));

//可以在后面继续put音效文件

}

/**

* soundPool播放

*

* @param sound

*            播放第一个

* @param loop

*            是否循环

*/

private void PlaySound(int sound, int loop) {

AudioManager mgr = (AudioManager) getActivity()

.getSystemService(Context.AUDIO_SERVICE);

// 获取系统声音的当前音量

float currentVolume = mgr.getStreamVolume(AudioManager.STREAM_MUSIC);

// 获取系统声音的最大音量

float maxVolume = mgr.getStreamMaxVolume(AudioManager.STREAM_MUSIC);

// 获取当前音量的百分比

float volume = currentVolume / maxVolume;

// 第一个参数是声效ID,第二个是左声道音量,第三个是右声道音量,第四个是流的优先级,最低为0,第五个是是否循环播放,第六个播放速度(1.0 =正常播放,范围0.5 - 2.0)

mSound.play(soundPoolMap.get(sound), volume, volume, 1, loop, 1f);

}

然后调用方法就可以了,我自己是添加了switch控件,来控制是否开启。

sw_bj.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {

@Override

public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {

if (isChecked){

isRingTone = true;

}else {

if(isRingTone)

{

isRingTone = false;

mPlayer.pause();

}

}

}

});

在需要的地方调用

if(MeFragment.isRingTone) //MeFragment 是类名

{

MeFragment.mPlayer.start(); //在别的类调用需要定义mplayer为静态变量

}

PlaySound(1, 0); // 开启SoundPool

mSound.pause(1); // 关闭SoundPool

mPlayer.start(); //开启MediaPlayer

mPlayer.pause(); //关闭MediaPlayer

希望能帮助到别人。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在 Android 应用程序中自定义短信图标,可以使用以下步骤: 1. 在 res/drawable 中创建一个新的图标文件,例如 my_sms_icon.png。 2. 在 AndroidManifest.xml 文件中添加以下代码,将该图标与应用程序的短信组件关联起来: ```xml <application ... > <activity android:name=".MySmsActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> <intent-filter> <action android:name="android.intent.action.SEND" /> <category android:name="android.intent.category.DEFAULT" /> <data android:mimeType="text/plain" /> </intent-filter> </activity> </application> ``` 其中,MySmsActivity 是你的应用程序中处理短信的 Activity 名称。 3. 在 MySmsActivity 中添加以下代码,将你的图标设置为短信组件的图标: ```java public class MySmsActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_my_sms); // 设置ActionBar图标 ActionBar actionBar = getActionBar(); actionBar.setIcon(R.drawable.my_sms_icon); // 设置Activity图标 setTaskDescription(new ActivityManager.TaskDescription( null, null, getResources().getColor(R.color.primary), BitmapFactory.decodeResource(getResources(), R.drawable.my_sms_icon))); } } ``` 这样,你就可以在应用程序中自定义短信图标了。注意,该图标只会在使用 intent 发送短信时显示。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值