我有一个项目,无法在互联网上获得良好的信息。
我正在编写一个应用,其中显示了Raw文件夹中的MP3歌曲列表,并允许用户单击按钮来播放歌曲。 我想以同样的方式允许用户将歌曲设置为“铃声”。
步骤1:
我在AndroidManifest.xml
文件中授予了权限。
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE">
</uses-permission>
步骤2:
我创建了一个原始文件并添加了mp3文件。
步骤3:
我创建了一个按钮和一个onClick
方法。
步骤4:
所有其余代码如下。我的错误在哪里?
package com.example.ustat.ringtone;
import android.content.ContentValues;
import android.media.RingtoneManager;
import android.net.Uri;
import android.os.Bundle;
import android.provider.MediaStore;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import java.io.File;
public class MainActivity extends AppCompatActivity {
Button btn;
Uri path;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
path = Uri.parse("android.resource://com.applenty/raw/");
RingtoneManager.setActualDefaultRingtoneUri(getApplicationContext(), RingtoneManager.TYPE_RINGTONE, path);
Log.i("Ringtone", "Ringtone Set to Resource:: "+ path.toString());
RingtoneManager.getRingtone(getApplicationContext(), path).play();
btn = (Button) findViewById(R.id.button);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
setRingtones();
}
});
}
private void setRingtones()
{
File k = new File(path, "ciaobella.mp3"); // path is a file playing
ContentValues values = new ContentValues();
values.put(MediaStore.MediaColumns.DATA, k.getAbsolutePath());
values.put(MediaStore.MediaColumns.TITLE, "My Song title"); //You will have to populate
values.put(MediaStore.MediaColumns.SIZE, 215454);
values.put(MediaStore.MediaColumns.MIME_TYPE, "audio/mp3");
values.put(MediaStore.Audio.Media.ARTIST, "Band Name"); //You will have to populate this
values.put(MediaStore.Audio.Media.DURATION, 230);
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);
//Insert it into the database
Uri uri = MediaStore.Audio.Media.getContentUriForPath(k.getAbsolutePath());
Uri newUri = main.getContentResolver().insert(uri, values);
RingtoneManager.setActualDefaultRingtoneUri(
MainActivity,
RingtoneManager.TYPE_RINGTONE,
newUri
);
}
}