如何长按按钮将声音设置为铃声?

目前它只适用于sound4但不适用于sound5

包com.test.soundboard;

import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import android.view.ContextMenu.ContextMenuInfo;

import android.widget.Button;

import android.widget.Toast; import android.app.Activity; import android.content.ContentValues; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.provider.MediaStore; import android.view.ContextMenu; import android.view.MenuItem; import android.view.View; import android.view.View.OnClickListener;

公共类SoundBoardTest扩展Activity实现OnClickListener {

private SoundManager mSoundManager;

@Override public void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);的setContentView(R.layout.main);

mSoundManager = new SoundManager();

mSoundManager.initSounds(getBaseContext());

mSoundManager.addSound(1, R.raw.sound4);

mSoundManager.addSound(2, R.raw.sound5);

//按下时按钮播放声音

View SoundButton4 = findViewById(R.id.SoundButton4);

SoundButton4.setOnClickListener(this);

View SoundButton5 = findViewById(R.id.SoundButton5);

SoundButton5.setOnClickListener(this);

}

public void onClick(View v) {

switch (v.getId()) {

case R.id.SoundButton4:

mSoundManager.playSound(1);

break;

case R.id.SoundButton5:

mSoundManager.playSound(2);

break;

}

//当长按按钮带上下文菜单以保存为铃声或通知

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

registerForContextMenu(SoundButton4);

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

registerForContextMenu(SoundButton5);

}

//按钮的上下文菜单1 @Override

public void onCreateContextMenu(ContextMenu菜单,View v,ContextMenuInfo menuInfo){

super.onCreateContextMenu(menu,v,menuInfo);

menu.setHeaderTitle("Save as...");

menu.add(0,v.getId(),0,"Ringtone");

menu.add(0,v.getId(),0,"Notification");

}

@Override

public boolean onContextItemSelected(MenuItem item) {

if(item.getTitle()=="Ringtone"){function1(item.getItemId());}

else if(item.getTitle()=="Notification"){function2(item.getItemId());}

else {return false;}

return true;

}

public void function1(int id){

if (savering(R.raw.sound4)){

// Code if successful

Toast.makeText(this, "Saved as Ringtone", Toast.LENGTH_SHORT).show();

}

else

{

// Code if unsuccessful

Toast.makeText(this, "Failed - Check your SDCard", Toast.LENGTH_SHORT).show();

}

}

public void function2(int id){

if (savering(R.raw.sound4)){

// Code if successful

Toast.makeText(this, "Saved as Notification", Toast.LENGTH_SHORT).show();

}

else

{

// Code if unsuccessful

Toast.makeText(this, "Failed - Check your SDCard", Toast.LENGTH_SHORT).show();

}

}

public boolean savering(int ressound){

byte [] buffer = null;

InputStream fIn = getBaseContext() . getResources() . openRawResource(ressound);

int size = 0;

try {

size = fIn.available();

buffer = new byte[size];

fIn.read(buffer);

fIn.close();

} catch (IOException e) {

// TODO Auto-generated catch block

return false;

}

String path="/sdcard/media/audio/ringtones/";

String filename="soundtest4"+".ogg";

boolean exists = (new File(path)).exists();

if (!exists){new File(path).mkdirs();}

FileOutputStream save;

try {

save = new FileOutputStream(path+filename);

save.write(buffer);

save.flush();

save.close();

} catch (FileNotFoundException e) {

// TODO Auto-generated catch block

return false;

} catch (IOException e) {

// TODO Auto-generated catch block

return false;

}

sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.parse("file://"+path+filename)));

File k = new File(path, filename);

ContentValues values = new ContentValues();

values.put(MediaStore.MediaColumns.DATA, k.getAbsolutePath());

values.put(MediaStore.MediaColumns.TITLE, "HahaSound");

values.put(MediaStore.MediaColumns.MIME_TYPE, "audio/ogg");

values.put(MediaStore.Audio.Media.ARTIST, "cssounds ");

values.put(MediaStore.Audio.Media.IS_RINGTONE, true);

values.put(MediaStore.Audio.Media.IS_NOTIFICATION, false);

values.put(MediaStore.Audio.Media.IS_ALARM, true);

values.put(MediaStore.Audio.Media.IS_MUSIC, false);

//Insert it into the database

this.getContentResolver().insert(MediaStore.Audio.Media.getContentUriForPath(k.getAbsolutePath()), values);

return true;

}

}

android java 怎么更换默认铃声,Android如何通过长按按钮将声音设置为铃声相关推荐

  1. android Java开发设计模式及在android中的应用解析

    android Java开发设计模式及在android中的应用解析 什么是设计模式: 可以用一句话概括设计模式---设计模式是一种利用OOP的封闭.继承和多态三大特性,同时在遵循单一职责原则.开闭原则 ...

  2. android百度地图更换定位图标,android百度地图定位,改变MyLocationOverlay默认图标(原始为蓝色点)(两种方法)...

    开放地图API无外乎google ,百度,高德等.其它的还有很多,不过比较好用的就这三种了,如果不需要出国(台湾例外),则最好使用百度地图,性能比高德好的多,无聊的时候自己可以测试测试.. 下面我简单 ...

  3. android java 数组转字符串_java – Android将字符串转换为数组字符串

    将其作为JSON处理.两个直接的好处是它会自动处理数据中的任何嵌入式逗号,另一个是你将获得带有不带引号的字符串的String []. String input = "[\"477\ ...

  4. java除了android,Java中是否有类似android中的android.os.Handler的类?

    没有一个默认.但是你可以让自己的自定义类来做类似的事情. 我做了一个这样的: import java.util.ArrayList; public class Handler extends Obje ...

  5. android java 调试工具_调试应用  |  Android 开发者  |  Android Developers

    Auto 如果您希望 Android Studio 自动为您要调试的代码选择最合适的选项,请选择此调试类型.例如,如果您的项目包含任何 C 或 C++ 代码,Android Studio 会自动使用 ...

  6. android连接usb后默认app,android – 记住USB连接,但不要启动应用程序

    我正在处理的应用程序通过USB连接成功连接设备. 但是,这会在连接USB设备时始终启动活动时产生不良影响.没有启动应用程序,我无法记住默认值.在连接上启动应用程序不是一个理想的效果.下面的小代码示例是 ...

  7. android java代码重启,如何在Android中重启服务?

    has anyone know how to restarting a service in android?? i have a service that called when device is ...

  8. android java 静态库_android的android.mk,和application.mk文件编写

    android的android.mk,和application.mk文件编写 1.简介 android.mk是用来描述要编译某个具体的模块,所需要的一些资源,包括要编译的源码.要链接的库等等 appl ...

  9. android java 延时函数,如何在Android中设置文本之间的延迟

    由于不能在UI线程上调用Thread.sleep(只显示最终结果),因此应该在另一个线程上执行此操作,例如: 在构造函数上: private Handler handler; public void ...

最新文章

  1. pg数据库生成随机时间_postgresql 时区与时间函数-阿里云开发者社区
  2. 设计师之歌 --【死了都要改】
  3. WildFly 报错 java.lang.NoClassDefFoundError
  4. 淘淘商城 @Autowired 装配失败
  5. Direct3D 开发之旅 3D 游戏基本概念的介绍2
  6. Android之解决开启热点后跳转页面不稳定问题
  7. P1912-[NOI2009]诗人小G【四边形不等式,单调队列】
  8. oracle之基本的过滤和排序数据之课后练习
  9. 【Matplotlib】【Python】如何使用matplotlib绘制各种图形
  10. Laravel使用EasyWechat 进行微信支付
  11. Java教程:Java JDK下载与安装教程
  12. java 获取文件扩展名_如何在Java中获取文件扩展名
  13. 一页纸商业计划书 (Business Plan) 模板(转载)
  14. C语言编写函数求字符串长度的几种实现方法
  15. win10上U盘插到电脑上无法显示盘符也打不开怎么办
  16. python——爬虫豆瓣250
  17. 分布式调度框架大集合
  18. vue 前端仿QQ截图实现Web端自定义截屏(JS版)
  19. [No00005F]读书与心智
  20. 【黄啊码】为什么我建议您选择go,而不选择php?

热门文章

  1. 彩色瓷砖(python)
  2. Win7 DCOM 配置中我的电脑出现红色箭头并且无属性显示的解决方法
  3. OleDbCommand 的特点
  4. html怎么弄br文字首行缩进,每段首行缩进2个字符如何设置CSS
  5. adb shell读取返回值_android代码执行adb shell终端命令(linux命令)并返回执行结果...
  6. BUS MASTER v3.2.2下载地址
  7. 唐代诗歌作品中常见的名言名句
  8. 6-1 计算两数的和与差 (10 分)
  9. 短视频去水印方法之-opencv进行批量图像修复
  10. C语言实现strcpy