android-鈴聲的設置與播放

在android系統中,不同鈴聲存放的鈴聲路徑:/system/media/audio/ringtones        來電鈴聲/system/media/audio/notifications        短信通知鈴聲/system/media/audio/alarms        鬧鐘鈴聲鈴聲的設置:import java.io.File;  import android.app.Activity;  import android.content.Intent;  import android.media.RingtoneManager;  import android.net.Uri;  import android.os.Bundle;  import android.view.View;  import android.widget.Button;  public class Activity01 extends Activity  {  /* 3個按鈕 */  private Button mButtonRingtone;  private Button mButtonAlarm;  private Button mButtonNotification;  /* 自定義的類型 */  public static final int ButtonRingtone          = 0;  public static final int ButtonAlarm             = 1;  public static final int ButtonNotification      = 2;  /* 鈴聲文件夾 */  private String strRingtoneFolder = "/sdcard/music/ringtones";  private String strAlarmFolder = "/sdcard/music/alarms";  private String strNotificationFolder = "/sdcard/music/notifications";  /** Called when the activity is first created. */  @Override  public void onCreate(Bundle savedInstanceState)  {  super.onCreate(savedInstanceState);  setContentView(R.layout.main);  mButtonRingtone = (Button) findViewById(R.id.ButtonRingtone);  mButtonAlarm = (Button) findViewById(R.id.ButtonAlarm);  mButtonNotification = (Button) findViewById(R.id.ButtonNotification);  /* 設置來電鈴聲 */  mButtonRingtone.setOnClickListener(new Button.OnClickListener()   {  @Override  public void onClick(View arg0)  {  if (bFolder(strRingtoneFolder))  {  //打開系統鈴聲設置  Intent intent = new Intent(RingtoneManager.ACTION_RINGTONE_PICKER);  //類型為來電RINGTONE  
                        intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE, RingtoneManager.TYPE_RINGTONE);  //設置顯示的title  intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TITLE, "設置來電鈴聲");  //當設置完成之后返回到當前的Activity  
                        startActivityForResult(intent, ButtonRingtone);  }  }  });  /* 設置鬧鐘鈴聲 */  mButtonAlarm.setOnClickListener(new Button.OnClickListener()   {  @Override  public void onClick(View arg0)  {  if (bFolder(strAlarmFolder))  {  //打開系統鈴聲設置  Intent intent = new Intent(RingtoneManager.ACTION_RINGTONE_PICKER);  //設置鈴聲類型和title  
                        intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE, RingtoneManager.TYPE_ALARM);  intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TITLE, "設置鬧鈴鈴聲");  //當設置完成之后返回到當前的Activity  
                        startActivityForResult(intent, ButtonAlarm);  }  }  });  /* 設置通知鈴聲 */  mButtonNotification.setOnClickListener(new Button.OnClickListener()   {  @Override  public void onClick(View arg0)  {  if (bFolder(strNotificationFolder))  {  //打開系統鈴聲設置  Intent intent = new Intent(RingtoneManager.ACTION_RINGTONE_PICKER);  //設置鈴聲類型和title  
                        intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE, RingtoneManager.TYPE_NOTIFICATION);  intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TITLE, "設置通知鈴聲");  //當設置完成之后返回到當前的Activity  
                        startActivityForResult(intent, ButtonNotification);  }  }  });  }  /* 當設置鈴聲之后的回調函數 */  @Override  protected void onActivityResult(int requestCode, int resultCode, Intent data)  {  // TODO Auto-generated method stub  if (resultCode != RESULT_OK)  {  return;  }  switch (requestCode)  {  case ButtonRingtone:  try  {  //得到我們選擇的鈴聲  Uri pickedUri = data.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI);  //將我們選擇的鈴聲設置成為默認  if (pickedUri != null)  {  RingtoneManager.setActualDefaultRingtoneUri(Activity01.this, RingtoneManager.TYPE_RINGTONE, pickedUri);  }  }  catch (Exception e)  {  }  break;  case ButtonAlarm:  try  {  //得到我們選擇的鈴聲  Uri pickedUri = data.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI);  //將我們選擇的鈴聲設置成為默認  if (pickedUri != null)  {  RingtoneManager.setActualDefaultRingtoneUri(Activity01.this, RingtoneManager.TYPE_ALARM, pickedUri);  }  }  catch (Exception e)  {  }  break;  case ButtonNotification:  try  {  //得到我們選擇的鈴聲  Uri pickedUri = data.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI);  //將我們選擇的鈴聲設置成為默認  if (pickedUri != null)  {  RingtoneManager.setActualDefaultRingtoneUri(Activity01.this, RingtoneManager.TYPE_NOTIFICATION, pickedUri);  }  }  catch (Exception e)  {  }  break;  }  super.onActivityResult(requestCode, resultCode, data);  }  //檢測是否存在指定的文件夾   //如果不存在則創建  private boolean bFolder(String strFolder)  {  boolean btmp = false;  File f = new File(strFolder);  if (!f.exists())  {  if (f.mkdirs())  {  btmp = true;  }  else  {  btmp = false;  }  }  else  {  btmp = true;  }  return btmp;  }  }  鈴聲的播放:player = new MediaPlayer();  try{  player.setDataSource(context, pickUri);  }catch(Exception e){  e.printStackTrace();  }  final AudioManager  audioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);  if(audioManager.getStreamVolume(AudioManager.STREAM_ALARM)!=0){  player.setAudioStreamType(AudioManager.STREAM_ALARM);  player.setLooping(true);  try {  player.prepare();  } catch (Exception e) {  // TODO Auto-generated catch block  
        e.printStackTrace();  }  player.start();  }  

?

轉載于:https://www.cnblogs.com/Free-Thinker/p/6704982.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/372401.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/372401.shtml
英文地址,請注明出處:http://en.pswp.cn/news/372401.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Apache Commons SCXML:有限狀態機實現

本文提到有限狀態機(FSM),SCXML(狀態圖可擴展標記語言)和Apache Common的SCXML庫。 本文還提供了基本的ATM有限狀態機示例代碼。 有限狀態機: 您可能還記得計算機科學課程中的有限狀態機。 FSM用于設計計算…

第二十章、分離應用程序邏輯并處理事件

理解委托 委托是對方法的引用。(之所以稱為委托,是因為一旦被調用,就將具體的處理“委托”給引用的方法) 委托對象引用了方法,和將int賦值給int變量一樣,是將方法引用賦給委托對象。 Processor p new Proc…

pymol怎么做底物口袋表面_怎么從文獻中發掘一篇新文章?

本文來自微信公眾號:X-MOLNews可能你的導師也曾說過這樣的話——盯著Nature、Science級別的文章做,可能最終會中十分的文章;如果盯著十分的文章做,可能最終發出來也就五六分;但如果就為了發個文章混畢業,很…

如何分析線程轉儲– IBM VM

本文是我們的線程轉儲分析系列的第4部分,它將為您概述什么是IBM VM的JVM線程轉儲以及您將找到的不同線程和數據點。 您將看到和學習??到,IBM VM Thread Dump格式是不同的,但是提供了更多現成的故障排除數據。 在這一點上,您應該…

VMware vSphere克隆虛擬機

參考資料:http://blog.csdn.net/shen_jz2012/article/details/484167711. 首先將你所要克隆的虛擬機關掉2. 選擇你的ESXI服務器選中"配置",然后選中存儲器右鍵你的存儲介質,比如我的是datastore1,選擇“瀏覽數據存儲”。…

將本地jar包倒入maven項目類庫中

有兩種方法&#xff1a;1.本地下載maven并配置環境變量&#xff0c;然后運行cmd控制臺輸入 mvn install:install-file -Dfile本地jar路徑 -DgroupId -DartifactId -Dpackagingjar -Dversion -DgeneratePomtrue. 2.直接在pom.xml中對應的依賴下面添加<scope>system&l…

Spring和JSF集成:分頁

處理大型數據集時&#xff0c;通常需要以分頁格式顯示數據。 分頁是一個有趣的問題&#xff0c;因為它傾向于跨越應用程序的所有層&#xff0c;從視圖層通過應用程序服務一直到對數據庫的原始調用。 在獲取分頁數據時&#xff0c;有一些非常好的解決方案。 如果您使用的是JPA&a…

三重積分平均值_直角坐標系下的三重積分的幾何可視化解釋圖解高等數學

12.4 直角坐標系下的三重積分三重積分假設 F(x,y,z) 為一個空間有界閉區域 D 上的函數. D 為下面立體橢球所占區域. 將空間區域分割成小長方塊. 體積記為 ΔVk, 其長寬高分別為Δxk, Δyk, Δzk , 并有下列的求和式:觀察下面動畫, 當空間不斷分割, 每個小方塊的體積 ΔVk 不斷變…

最短網絡Agri-Net

【例4-11】、最短網絡Agri-Net【問題描述】農民約翰被選為他們鎮的鎮長&#xff01;他其中一個競選承諾就是在鎮上建立起互聯網&#xff0c;并連接到所有的農場。當然&#xff0c;他需要你的幫助。約翰已經給他的農場安排了一條高速的網絡線路&#xff0c;他想把這條線路共享給…

cors-synchronous-requests-not-working-in-firefox

http://stackoverflow.com/questions/16668386/cors-synchronous-requests-not-working-in-firefox轉載于:https://www.cnblogs.com/diyunpeng/p/5829594.html

硬盤接口協議

硬盤是電腦主要的存儲媒介之一&#xff0c;由一個或者多個鋁制或者玻璃制的碟片組成。碟片外覆蓋有鐵磁性材料。硬盤有固態硬盤&#xff08;SSD 盤&#xff0c;新式硬盤&#xff09;、機械硬盤&#xff08;HDD 傳統硬盤&#xff09;、混合硬盤&#xff08;HHD 一塊基于傳統機械…

圖的表示

Python 數據結構與算法——圖&#xff08;Graph&#xff09; 1. 鄰接矩陣 vs 鄰接表&#xff08;壓縮的鄰接矩陣&#xff09; 鄰接矩陣的缺點是&#xff1a; 空間占用與結點數的平方成正比&#xff0c;可能帶來很大的浪費&#xff1b;鄰接矩陣不容易增加新的結點&#xff0c;不…

在Java Web應用程序中阻止CSRF

跨站點請求偽造攻擊&#xff08;CSRF&#xff09;在Web應用程序中非常常見&#xff0c;如果允許&#xff0c;可能會造成重大危害。 如果您從未聽說過CSRF&#xff0c;建議您查看有關它的OWASP頁面 。 幸運的是&#xff0c;阻止CSRF攻擊非常簡單&#xff0c;我將向您展示它們的工…

windows命令行無法啟動redis_windows系統安裝redis

1、下載最新redis https://github.com/MicrosoftArchive/redis/releases我選擇下載msi版本的2.雙擊下載包安裝3.設置redis環境變量&#xff0c;把redis路徑配置到系統變量path值中4啟動redis&#xff0c;cmd進入安裝好redis文件夾 輸入&#xff1a;如果redis啟動出錯Creating S…

SQL Server 篩選時間區間

一、SQL直接判斷 select * from login where pass>2013/03/25 and pass < 2017/04/24 二、DATEDIFF() 函數返回兩個日期之間的時間 --語法 DATEDIFF(datepart,startdate,enddate) --開始時間 startdate --結束時間 enddate --datepart datepart縮寫年yy, yyyy季度qq, …

OpenShift Express Web管理控制臺:入門

本周&#xff0c; 最新版本的OpenShift為已經很棒的PaaS Cloud提供商帶來了兩個非常好的功能。 首先&#xff0c;JBoss AS已從7.0升級到7.1&#xff0c;并且所有新的Express Web Management Console已作為預覽發布。 在本文中&#xff0c;我們將研究如何使用此新控制臺&#xf…

Linux-IP地址后邊加個/8(16,24,32)是什么意思?

是掩碼的位數 A類IP地址的默認子網掩碼為255.0.0.0&#xff08;由于255相當于二進制的8位1&#xff0c;所以也縮寫成“/8”&#xff0c;表示網絡號占了8位&#xff09;; B類的為255.255.0.0&#xff08;/16&#xff09;; C類的為255.255.255.0(/24) /30就是255…

女士細線毛衣起多少針_從起針到縫合,教你織毛衣的各種要點(詳細教程)

新手學織毛衣看過來&#xff0c;7大編織要點幫你解決織好一件毛衣的基礎問題&#xff0c;滿滿的干貨&#xff0c;每點都值得學習!一、起針二、棒針符號三、如何織小樣四、依據小樣推算針數收掛肩的推算五、斜肩針數的推算開前、后領的位置與針數六、袖山的推算七、如何上袖子一…

關于OPENSSL的使用

#import <Foundation/Foundation.h> interface RSAEncryptor : NSObject /** * 加密方法 * * param str 需要加密的字符串 * param path .der格式的公鑰文件路徑 */ (NSString *)encryptString:(NSString *)str publicKeyWithContentsOfFile:(NSString *)path; /*…

Jelastic Java云端平臺

誰在Jelastic背后&#xff1f; 那是我的第一個問題&#xff0c;因此我瀏覽了Jelastic網站。 回答此問題的最佳方法是查看“ Jelastic團隊”部分。 創始人&#xff0c;顧問&#xff0c;特殊合作伙伴構成了一支真正的專業團隊。 作為特殊的合作伙伴&#xff0c;您會發現MySQL&am…