Android 將音樂檔案打包到程式中並設定為鈴聲的詳細方法介紹

來源:互聯網
上載者:User
本文主要介紹如何將音樂檔案打包到程式中並設定為鈴聲

 

首先,將我們的鈴聲檔案放到res/raw目錄下,沒有的話就建一個raw目錄

 

canon.mp3檔案放到raw目錄下

 

 

然後在程式裡讀取這個檔案:

代碼為

getResources().openRawResource(R.raw.canon);  

然後將讀出的內容寫到sdcard上

 

程式能直接把sdcard上的一個檔案設定為鈴聲。

 

具體的實現代碼如下

 

setring.java

package zy.ring;<br />import java.io.File;<br />import java.io.FileOutputStream;<br />import java.io.IOException;<br />import java.io.InputStream;<br />import android.app.Activity;<br />import android.content.ContentValues;<br />import android.media.RingtoneManager;<br />import android.net.Uri;<br />import android.os.Bundle;<br />import android.provider.MediaStore;<br />import android.util.Log;<br />import android.widget.Toast;<br />public class setring extends Activity {<br /> /** Called when the activity is first created. */<br /> @Override<br /> public void onCreate(Bundle savedInstanceState) {<br /> super.onCreate(savedInstanceState);<br /> setContentView(R.layout.main);<br /> InputStream inputStream = null; </p><p> try {<br /> inputStream = getResources().openRawResource(R.raw.canon);<br /> byte[] reader = new byte[inputStream.available()];<br /> while (inputStream.read(reader) != -1) {}<br /> writefile(reader,"/sdcard/canon.mp3");<br /> Log.i("setring", "success");<br /> } catch(IOException e) {<br /> Log.i("setring", e.getMessage());<br /> } finally {<br /> if (inputStream != null) {<br /> try {<br /> inputStream.close();<br /> } catch (IOException e) {<br /> Log.i("setring", e.getMessage());<br /> }<br /> }<br /> } </p><p> setMyRingtone();</p><p> }<br /> public void writefile(byte[] str,String path )<br /> {<br /> File file;<br /> FileOutputStream out;<br /> try {<br /> //建立檔案<br /> file = new File(path);<br /> file.createNewFile();<br /> //開啟檔案file的OutputStream<br /> out = new FileOutputStream(file);</p><p> //將字串轉換成byte數組寫入檔案<br /> out.write(str);<br /> //關閉檔案file的OutputStream<br /> out.close();<br /> } catch (IOException e) {<br /> //將出錯資訊列印到Logcat<br /> DisplayToast(e.toString());</p><p> }<br /> } </p><p> public void setMyRingtone()<br /> {<br /> File k = new File("/sdcard/canon.mp3"); // 設定歌曲路徑<br /> ContentValues values = new ContentValues();<br /> values.put(MediaStore.MediaColumns.DATA, k.getAbsolutePath());<br /> values.put(MediaStore.MediaColumns.TITLE, k.getName());<br /> values.put(MediaStore.MediaColumns.SIZE, 8474325);<br /> values.put(MediaStore.MediaColumns.MIME_TYPE, "audio/mp3");<br /> values.put(MediaStore.Audio.Media.ARTIST, "Madonna");<br /> values.put(MediaStore.Audio.Media.DURATION, 230);<br /> values.put(MediaStore.Audio.Media.IS_RINGTONE, true);<br /> values.put(MediaStore.Audio.Media.IS_NOTIFICATION, false);<br /> values.put(MediaStore.Audio.Media.IS_ALARM, false);<br /> values.put(MediaStore.Audio.Media.IS_MUSIC, false);<br /> // Insert it into the database<br /> Uri uri = MediaStore.Audio.Media.getContentUriForPath(k.getAbsolutePath());<br /> Uri newUri = this.getContentResolver().insert(uri, values);<br /> RingtoneManager.setActualDefaultRingtoneUri(this, RingtoneManager.TYPE_RINGTONE, newUri);<br /> ;}<br /> public void DisplayToast(String str)<br /> {<br /> Toast.makeText(this,str,Toast.LENGTH_SHORT).show();<br /> }<br />} 

 

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?><br /><manifest xmlns:android="http://schemas.android.com/apk/res/android"<br /> package="zy.ring"<br /> android:versionCode="1"<br /> android:versionName="1.0"><br /> <application android:icon="@drawable/icon" android:label="@string/app_name"><br /> <activity android:name=".setring"<br /> android:label="@string/app_name"><br /> <intent-filter><br /> <action android:name="android.intent.action.MAIN" /><br /> <category android:name="android.intent.category.LAUNCHER" /><br /> </intent-filter><br /> </activity><br /> </application><br /> <uses-sdk android:minSdkVersion="3" /><br /><uses-permission android:name="android.permission.WRITE_SETTINGS"></uses-permission><br /></manifest>  

需要加入許可權

<uses-permission android:name="android.permission.WRITE_SETTINGS"></uses-permission> 

程式運行就能將包中的canon.mp3拷貝到sdcard並且設定為預設鈴聲了

 

當然,你也可以拷貝這個檔案到自己的私人目錄data/data/zy.ring/路徑下也可以

 

 

最後我們開啟手機的設定鈴聲介面,可以看到我們的canon.mp3設定成了預設的鈴聲

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.