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

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

目前它只适用于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;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值