App设置自己的提示音乐
锁屏提示:
KeyguardManager keyguardManager = (KeyguardManager) getSystemService(KEYGUARD_SERVICE);
KeyguardManager.KeyguardLock keyguardLock = keyguardManager.newKeyguardLock("");
keyguardLock.disableKeyguard();
方法一:
import android.app.Activity;
import android.content.ContentValues;
import android.content.Context;
import android.content.SharedPreferences;
import android.media.MediaPlayer;
import android.media.Ringtone;
import android.media.RingtoneManager;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.provider.MediaStore;
import android.view.View;
import android.widget.Button;
import com.iflytek.speech.SpeechSynthesizer;
import com.iflytek.speech.SpeechUtility;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.text.SimpleDateFormat;
import java.util.Calendar;
public class MainActivity extends Activity {
private Button bt01;
private Button bt04;
private Ringtone rt;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
/*加载页面*/
setContentView(R.layout.activity_main);
init();
}
private void init() {
bt04 = (Button)findViewById(R.id.le10bt04);
bt04.setOnClickListener(onclick);
}
View.OnClickListener onclick = new View.OnClickListener() {
@Override
public void onClick(View v) {
MediaPlayer mediaPlayer = null;
switch(v.getId()) {
case R.id.le10bt04:
/**************************************播放音乐*********************************************/
MediaPlayer mp = MediaPlayer.create(getApplicationContext(), R.raw.ringer);
try
{
mp.prepare();
} catch (IllegalStateException e)
{
e.printStackTrace();
} catch (IOException e)
{
e.printStackTrace();
}
//震动
Vibrator vibrator = (Vibrator)MainActivity.this.getSystemService(Context.VIBRATOR_SERVICE);
vibrator.vibrate(new long[]{300,500},0);
vibrator.vibrate(2500);
mp.start();
break;
}
}
};
方法二:
private Ringtone rt;
InputStream inputStream = getResources().openRawResource(R.raw.ringer);
String sign = (String) getData(MainActivity.this, "aa", "");
String path = getPath() + "/" +getMD5()+ sign + "notice.mp3";
File file = new File(path);
if (!file.exists()) {
try {
file.createNewFile();
OutputStream os = new FileOutputStream(file);
int bytesRead = 0;
byte[] buffer = new byte[8192];
while ((bytesRead = inputStream.read(buffer, 0, 8192)) != -1) {
os.write(buffer, 0, bytesRead);
}
os.close();
inputStream.close();
} catch (Exception e) {
e.printStackTrace();
}
}
try {
ContentValues values = new ContentValues();
values.put(MediaStore.MediaColumns.DATA, file.getAbsolutePath());
values.put(MediaStore.MediaColumns.TITLE, file.getName());
values.put(MediaStore.MediaColumns.MIME_TYPE, "audio/*");
values.put(MediaStore.Audio.Media.IS_RINGTONE, true);
values.put(MediaStore.Audio.Media.IS_NOTIFICATION, false);
values.put(MediaStore.Audio.Media.IS_ALARM, false);
values.put(MediaStore.Audio.Media.IS_MUSIC, false);
Uri uri = MediaStore.Audio.Media.getContentUriForPath(file.getAbsolutePath());
Uri newUri = MainActivity.this.getContentResolver().insert(uri, values);
RingtoneManager.setActualDefaultRingtoneUri(MainActivity.this, RingtoneManager.TYPE_RINGTONE, newUri);
// 播放铃声
rt= RingtoneManager.getRingtone(MainActivity.this, newUri);
rt.play();
} catch (Exception e) {
e.printStackTrace();
// LogUtils.i("写入文件出错了");
}
private static final String FILE_NAME = "123";
public static Object getData(Context context, String key, Object defValue) {
String type = defValue.getClass().getSimpleName();
SharedPreferences sharedPreferences = context.getSharedPreferences(FILE_NAME, Context.MODE_PRIVATE);
// defValue为为默认值,如果当前获取不到数据就返回它
if ("Integer".equals(type)) {
return sharedPreferences.getInt(key, (Integer) defValue);
} else if ("Boolean".equals(type)) {
return sharedPreferences.getBoolean(key, (Boolean) defValue);
} else if ("String".equals(type)) {
return sharedPreferences.getString(key, (String) defValue);
} else if ("Float".equals(type)) {
return sharedPreferences.getFloat(key, (Float) defValue);
} else if ("Long".equals(type)) {
return sharedPreferences.getLong(key, (Long) defValue);
}
return null;
}
public static String getPath() {
String state = Environment.getExternalStorageState();
File sdcardDir = Environment.getExternalStorageDirectory();
if (Environment.MEDIA_MOUNTED.equals(state))
return sdcardDir.getPath();
else
return null;
}
/**
* 访问网络时需要提交的加密
*/
public static String getMD5() {
SimpleDateFormat sDateFormat = new SimpleDateFormat("yyyyMMddHHmm");
String date = sDateFormat.format(new java.util.Date());
String str = "zoeopvnm3sab" + date;
String key = MD5.getMessageDigest(str.getBytes());
return key;
}
MD5
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class MD5 {
private MD5() {}
// 全局数组
private final static String[] strDigits = { "0", "1", "2", "3", "4", "5",
"6", "7", "8", "9", "a", "b", "c", "d", "e", "f" };
public final static String getMessageDigest(byte[] buffer) {
char hexDigits[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' };
try {
MessageDigest mdTemp = MessageDigest.getInstance("MD5");
mdTemp.update(buffer);
byte[] md = mdTemp.digest();
int j = md.length;
char str[] = new char[j * 2];
int k = 0;
for (int i = 0; i < j; i++) {
byte byte0 = md[i];
str[k++] = hexDigits[byte0 >>> 4 & 0xf];
str[k++] = hexDigits[byte0 & 0xf];
}
return new String(str);
} catch (Exception e) {
return null;
}
}
public static String GetMD5Code(String strObj) {
String resultString = null;
try {
resultString = new String(strObj);
MessageDigest md = MessageDigest.getInstance("MD5");
// md.digest() 该函数返回值为存放哈希值结果的byte数组
resultString = byteToString(md.digest(strObj.getBytes()));
} catch (NoSuchAlgorithmException ex) {
ex.printStackTrace();
}
return resultString;
}
// 转换字节数组为16进制字串
private static String byteToString(byte[] bByte) {
StringBuffer sBuffer = new StringBuffer();
for (int i = 0; i < bByte.length; i++) {
sBuffer.append(byteToArrayString(bByte[i]));
}
return sBuffer.toString();
}
// 返回形式为数字跟字符串
private static String byteToArrayString(byte bByte) {
int iRet = bByte;
// System.out.println("iRet="+iRet);
if (iRet < 0) {
iRet += 256;
}
int iD1 = iRet / 16;
int iD2 = iRet % 16;
return strDigits[iD1] + strDigits[iD2];
}
}