设置手机铃声

import android.app.Activity;
import android.content.AsyncQueryHandler;
import android.content.ContentResolver;
import android.content.ContentUris;
import android.database.Cursor;
import android.media.RingtoneManager;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.provider.MediaStore;
import android.provider.MediaStore.Audio.Media;
import android.util.Log;
import android.view.ContextMenu;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ContextMenu.ContextMenuInfo;
import android.widget.AdapterView.AdapterContextMenuInfo;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
import android.widget.Toast;

public class MainActivity extends Activity {
	private ListView listView;
	//内容解析者
	private ContentResolver cr;
	//适配器
	private SimpleCursorAdapter adapter;
	private Cursor cursor;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		listView = (ListView)findViewById(R.id.listView);
		
		cr = getContentResolver();
		
		
	}

	
	//异步任务 AsyncTask  
	//AsyncQueryHandler 异步查询处理者。
	public void getSongs3(View v){
		
		MyAsyncQeuryHandler mAQH = new MyAsyncQeuryHandler(getContentResolver());
		mAQH.startQuery(7, null, Media.EXTERNAL_CONTENT_URI, new String[]{Media._ID,Media.DISPLAY_NAME}, null, null, null);
		
	}
	
	private class MyAsyncQeuryHandler extends AsyncQueryHandler{

		public MyAsyncQeuryHandler(ContentResolver cr) {
			super(cr);
		}
		
		@Override
		protected void onQueryComplete(int token, Object cookie, Cursor cursor) {
			super.onQueryComplete(token, cookie, cursor);
			
			if(cursor != null){
				adapter = new SimpleCursorAdapter(MainActivity.this, android.R.layout.simple_list_item_1, cursor, new String[]{Media.DISPLAY_NAME}, new int[]{android.R.id.text1});
				listView.setAdapter(adapter);
				MainActivity.this.registerForContextMenu(listView);
			
			}
			
		}

	}
	
	
	
	//点击按钮,开启线程实现歌曲信息查询。
	public void getSongs2(View v){
		new Thread(){
			public void run() {
				Uri uri = Media.EXTERNAL_CONTENT_URI;
				cursor = cr.query(uri, new String[]{ Media._ID,Media.DISPLAY_NAME }, null, null, null);
				if(cursor != null){
					mHandler.sendEmptyMessage(1);
				}
			};
		}.start();
	}
	
	private Handler mHandler = new Handler(){
		public void handleMessage(android.os.Message msg) {
			
			adapter = new SimpleCursorAdapter(MainActivity.this, android.R.layout.simple_list_item_1, cursor, new String[]{Media.DISPLAY_NAME}, new int[]{android.R.id.text1});
			listView.setAdapter(adapter);
			MainActivity.this.registerForContextMenu(listView);
			
		};
	};
	
	
	public void getSongs(View v){
		//点击按钮,查询当前手机的歌曲,并且显示到ListView中。
		
		//内容提供者   ContentProvider.
		
		Uri uri = Media.EXTERNAL_CONTENT_URI;
		
		//歌曲ID,歌曲名称。
		cursor = cr.query(uri, new String[]{ Media._ID,Media.DISPLAY_NAME }, null, null, null);
		
		//遍历查看是否有获得歌曲信息。
		/*if(cursor!=null){
			while(cursor.moveToNext()){
				Log.i("TZ", cursor.getInt(0)+","+cursor.getString(1));
			}
		}*/
		
		//将cursor信息展示到ListView.
		
		//1,将cursor遍历,得到List< Song(id,name) >
		//2,适配器  SimpleCursorAdapter,处理数据源是cursor,然后将信息展示到ListView中。
		if(cursor != null){
			adapter = new SimpleCursorAdapter(this, android.R.layout.simple_list_item_1, cursor, new String[]{Media.DISPLAY_NAME}, new int[]{android.R.id.text1});
			//将适配器设置给listView.
			listView.setAdapter(adapter);
			
			//给当前的ListView增加上下文菜单。
			MainActivity.this.registerForContextMenu(listView);
		}
		
	}
	
	
	//重写Activity的相关方法,给上下文菜单中增加item.
	@Override
	public void onCreateContextMenu(ContextMenu menu, View v,
			ContextMenuInfo menuInfo) {	
		menu.add("设置来电铃声");
		menu.add("显示歌曲的详情");
	}
	
	//因为上下文菜单是Activity创建的,所以其item的点击事件,也是Activity来处理。
	@Override
	public boolean onContextItemSelected(MenuItem item) {
		String title = item.getTitle().toString();
		
		if(title.equals("设置来电铃声")){
			//获得当前长按的歌曲,然后将其设置给来电铃声。
			
			//还必须知道当前点击的item的下标。
			AdapterContextMenuInfo menuInfo = (AdapterContextMenuInfo)item.getMenuInfo();
			
			int itemPosition = menuInfo.position;
			
			//将cursor跳到 itemPosition位置,然后获得当前位置的歌曲名称。
			cursor.moveToPosition(itemPosition);
			
			String songName = cursor.getString(1);
			
			int songID = cursor.getInt(0);
			
			//来电铃声管理者。
			Uri uri = ContentUris.withAppendedId(Media.EXTERNAL_CONTENT_URI, songID);
			RingtoneManager.setActualDefaultRingtoneUri(MainActivity.this, RingtoneManager.TYPE_RINGTONE, uri);
			Toast.makeText(MainActivity.this, "设置铃声成功", 1).show();
			
			//Toast.makeText(MainActivity.this, "设置"+ songName +"为来电铃声!", 0).show();
			
		}
		
		return super.onContextItemSelected(item);
	}
}

整理自教程
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值