package mif.apps.ringtonepro;
import java.io.File;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.ContentValues;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.res.Configuration;
import android.database.Cursor;
import android.media.MediaPlayer;
import android.media.RingtoneManager;
import android.net.Uri;
import android.os.Bundle;
import android.provider.MediaStore;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
import android.widget.Toast;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemLongClickListener;
public class RingtonePro extends Activity {
private static final int INPUT = 0 ;
//试听播放器
private MediaPlayer player = new MediaPlayer();
/*数据库*/
MyDataBaseAdapter m_MyDatabaseAdapter;
/*listview*/
ListView mLib;
String prePath = "/sdcard/";
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
/*创建数据库*/
m_MyDatabaseAdapter = new MyDataBaseAdapter(this);
m_MyDatabaseAdapter.open();
mLib = (ListView)findViewById(R.id.lib);
UpdataAdapter();
//ListView监听设置
mLib.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
// TODO Auto-generated method stub
String p = m_MyDatabaseAdapter.getPath(arg2+1);
Log.i("ListView",p+" clicked");
onStart(p);
Toast.makeText( getApplicationContext (),"长按进行设置", Toast.LENGTH_SHORT ).show();
}
});
mLib.setOnItemLongClickListener(new OnItemLongClickListener() {
public boolean onItemLongClick(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
// TODO Auto-generated method stub
//数据库ID从1开始,ListView的Item的ID从0开始,所以加1,使数据库与ListView一一对应
final int id = arg2+1;
final String p = m_MyDatabaseAdapter.getPath(id);
player.stop();
//对话框
final CharSequence [] items = { getString(R.string.setRingtone) , getString(R.string.setNotification) , getString(R.string.setAlarm) , getString(R.string.delete) , getString(R.string.neverMind) };
Dialog dialog = new AlertDialog.Builder(RingtonePro.this)
.setItems(items , new DialogInterface . OnClickListener () {
public void onClick ( DialogInterface dialog , int item ) {
switch(item){
case 0:setMyRingtone(p);
break;
case 1:setMyNotification(p);
break;
case 2:setMyAlarm(p);
break;
case 3:deleteitem(id);
break;
case 4:
Toast.makeText( getApplicationContext (),R.string.neverMind, Toast.LENGTH_SHORT ).show();
break;
}
}
}).create();
dialog.show();
return false;
}
});
Toast.makeText(this, "按MENU键添加铃声", Toast.LENGTH_SHORT).show();
}
//返回时更新Adapter
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
UpdataAdapter();
}
//底部弹出菜单
public boolean onCreateOptionsMenu(Menu menu)
{
super.onCreateOptionsMenu(menu);
menu.add(0, INPUT, 0, "从SD卡导入铃声").setIcon(android.R.drawable.ic_menu_upload);
return true;
}
public boolean onOptionsItemSelected(MenuItem item)
{
super.onOptionsItemSelected(item);
switch (item.getItemId())
{
case INPUT:
goInputFileActivity();
break;
}
return false;
}
public void goInputFileActivity(){
Intent intent = new Intent();
intent.setClass(RingtonePro.this, InputFile.class);
startActivity(intent);
}
/*数据库list*/
public void UpdataAdapter()
{
// 获取数据库的Cursor
Cursor cur = m_MyDatabaseAdapter.fetchAllData();
if (cur != null && cur.getCount() >= 0)
{
Log.i("Database","done");
// ListAdapter是ListView和后台数据的桥梁
ListAdapter adapter = new SimpleCursorAdapter(this,
// 定义List中每一行的显示模板
// 表示每一行包含两个数据项
R.layout.liblist_item,
// 数据库的Cursor对象
cur,
// 从数据库的TABLE_NUM和TABLE_DATA两列中取数据
new String[] {MyDataBaseAdapter.TABLE_rNAME, MyDataBaseAdapter.TABLE_PATH },
// 与NAME和PATH对应的Views
new int[] { R.id.listitem_title, R.id.listitem_content });
/* 将adapter添加到m_ListView中 */
mLib.setAdapter(adapter);
}
}
//点击播放试听
public void onStart(String p)
{
/*Uri path= Uri.parse(p);
player.stop();
player = MediaPlayer.create(this, path);
player.start();*/
if(prePath.equals(p)&&player.isPlaying())
{
player.stop();
}
else
{
Uri path= Uri.parse(p);
prePath = p;
player.stop();
player = MediaPlayer.create(this, path);
player.start();
}
}
//设置--铃声
public void setMyRingtone(final String p)
{
player.stop();
File sdfile = new File(p);
Log.i("File",p);
ContentValues values = new ContentValues();
values.put(MediaStore.MediaColumns.DATA, sdfile.getAbsolutePath());
values.put(MediaStore.MediaColumns.TITLE, sdfile.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(sdfile.getAbsolutePath());
Uri newUri = this.getContentResolver().insert(uri, values);
RingtoneManager.setActualDefaultRingtoneUri(this, RingtoneManager.TYPE_RINGTONE, newUri);
Toast.makeText( getApplicationContext (),R.string.setRingtoneSucceed, Toast.LENGTH_SHORT ).show();
System.out.println("setMyRingtone()-------------");
}
//设置--提示音
public void setMyNotification(final String p)
{
player.stop();
File sdfile = new File(p);
ContentValues values = new ContentValues();
values.put(MediaStore.MediaColumns.DATA, sdfile.getAbsolutePath());
values.put(MediaStore.MediaColumns.TITLE, sdfile.getName());
values.put(MediaStore.MediaColumns.MIME_TYPE, "audio/*");
values.put(MediaStore.Audio.Media.IS_RINGTONE, false);
values.put(MediaStore.Audio.Media.IS_NOTIFICATION, true);
values.put(MediaStore.Audio.Media.IS_ALARM, false);
values.put(MediaStore.Audio.Media.IS_MUSIC, false);
Uri uri = MediaStore.Audio.Media.getContentUriForPath(sdfile.getAbsolutePath());
Uri newUri = this.getContentResolver().insert(uri, values);
RingtoneManager.setActualDefaultRingtoneUri(this, RingtoneManager.TYPE_NOTIFICATION, newUri);
Toast.makeText( getApplicationContext (),R.string.setNotificationSucceed, Toast.LENGTH_SHORT ).show();
System.out.println("setMyNOTIFICATION-------------");
}
//设置--闹铃音
public void setMyAlarm(final String p)
{
player.stop();
File sdfile = new File(p);
ContentValues values = new ContentValues();
values.put(MediaStore.MediaColumns.DATA, sdfile.getAbsolutePath());
values.put(MediaStore.MediaColumns.TITLE, sdfile.getName());
values.put(MediaStore.MediaColumns.MIME_TYPE, "audio/*");
values.put(MediaStore.Audio.Media.IS_
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
Android 手机铃声软件源码-IT计算机-毕业设计.zip (49个子文件)
Android 手机铃声软件源码
1_120818221447_1.png 31KB
Android 手机铃声软件源码
bin
mif
apps
ringtonepro
InputFileListAdapter.class 3KB
InputFile$1.class 2KB
R$layout.class 519B
R$id.class 839B
R$drawable.class 600B
InputFile.class 6KB
InputFileListItem.class 1KB
InputFile$2.class 3KB
RingtonePro.class 7KB
R$attr.class 346B
R.class 595B
R$array.class 408B
RingtonePro$2.class 3KB
RingtonePro$1.class 2KB
R$string.class 1KB
MyDataBaseAdapter$DatabaseHelper.class 1KB
RingtonePro$2$1.class 2KB
MyDataBaseAdapter.class 4KB
classes.dex 22KB
resources.ap_ 27KB
RingtonePro.apk 40KB
res
drawable-ldpi
icon.png 2KB
drawable-hdpi
icon.png 2KB
drawable
toggleall.png 3KB
selectall.png 3KB
folder.png 2KB
uponelevel.png 3KB
unselectall.png 3KB
audio.png 2KB
values
strings.xml 1KB
fileendings.xml 277B
drawable-mdpi
icon.png 1KB
layout
input_file_list_item.xml 3KB
liblist_item.xml 2KB
main.xml 557B
input_file_list.xml 788B
assets
default.properties 362B
gen
mif
apps
ringtonepro
R.java 3KB
proguard.cfg 1KB
.settings
org.eclipse.jdt.core.prefs 208B
src
mif
apps
ringtonepro
InputFileListAdapter.java 2KB
InputFileListItem.java 982B
MyDataBaseAdapter.java 4KB
InputFile.java 6KB
RingtonePro.java 10KB
.project 847B
.classpath 280B
AndroidManifest.xml 1KB
共 49 条
- 1
资源评论
- zsc2142022-11-26资源内容详尽,对我有使用价值,谢谢资源主的分享。
芝麻粒儿
- 粉丝: 6w+
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 简单的Linux C代码,实现链表功能
- 汇编语言探索之旅:从基础到实践,解锁底层奥秘-markdown材料.zip
- Fortran语言:经典与现代交织的编程之旅-markdown材料.zip
- 基于python编写的appium自动化框架,采用PO模式,并集成了日志以及测试报告通过邮件发送的功能
- csdn.apk
- spleeter模型下载
- 微信小程序 - 图书管理系统源码.zip
- 微信小程序 - 图片自适应 ,富文本解析源码.zip
- 微信小程序 - 同乐居商城:购物车合算源码
- 1、根据输入的三条边值判断能组成何种三角形,并设计测试数据进行判定覆盖测试 三条边为变量a、b、c,范围为1≤边值≤10,不在范
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功