java-根据所选列表视图项的位置设置铃声

java-根据所选列表视图项的位置设置铃声,第1张

概述我正在尝试根据所选列表视图项的位置将所选声音另存为铃声/通知声音,但是在为此找到相关教程(如果有)时遇到严重问题.到目前为止,下面是我的代码,但是我想以最简单的方式实现此目的/为了减少代码量,因此为了简单起见,我使用了1个上下文菜单.理想地publicvoidfunction1(intid){

我正在尝试根据所选列表视图项的位置将所选声音另存为铃声/通知声音,但是在为此找到相关教程(如果有)时遇到严重问题.到目前为止,下面是我的代码,但是我想以最简单的方式实现此目的/为了减少代码量,因此为了简单起见,我使用了1个上下文菜单.理想地

public voID function1(int ID){    }

这是用于设置铃声的代码所在的位置,

public voID function2(int ID){    }

是用于设置通知声音的代码.

例如. (在设置铃声时尝试达到此目的)单击&按住“ chimes”列表项>上下文菜单出现>选择“设置为铃声”上下文菜单项> >出现“电话铃声”窗口(带有“铃声”作为可用选项之一).用户单击确定或取消>如果用户单击“确定”,请返回到我的应用程序并显示吐司通知(“铃声已保存”);或者,如果用户单击“取消”,请返回我的应用程序并显示吐司通知(“铃声未保存”).

所有帮助将不胜感激.

import androID.media.MediaPlayer;import androID.os.Bundle;import androID.support.v7.app.ActionBaractivity;import androID.vIEw.ContextMenu;import androID.vIEw.MenuItem;import androID.vIEw.VIEw;import androID.Widget.AdapterVIEw;import androID.Widget.ArrayAdapter;import androID.Widget.ListVIEw;public class MainActivity extends ActionBaractivity {    private ListVIEw mainList;    private MediaPlayer mp;    private final String[] ListContent = {            "chimes", "chord", "ding", "notify",             "recycle", "ringin", "ring out","tada"    };    @OverrIDe    protected voID onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentVIEw(R.layout.activity_main);        mp = new MediaPlayer();        mainList = (ListVIEw) findVIEwByID(R.ID.main_ListVIEw);        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,                androID.R.layout.simple_List_item_1, ListContent);        mainList.setAdapter(adapter);        registerForContextMenu(this.mainList);    }    @OverrIDe    public voID onCreateContextMenu(ContextMenu menu, VIEw v,ContextMenu.ContextMenuInfo menuInfo) {        super.onCreateContextMenu(menu, v, menuInfo);        menu.add(0, v.getID(), 0, "Action 1");        menu.add(0, v.getID(), 0, "Action 2");    }    @OverrIDe    public boolean onContextItemSelected(MenuItem item) {        if (item.getTitle().equals("Action 1")){            function1(item.getItemID());        } else if (item.getTitle().equals("Action 2")){            function2(item.getItemID());        } else {            return false;        }        return true;    }    public voID function1(int ID){    }    public voID function2(int ID){    }}

解决方法:

为了设置铃声或通知声音,请使用RingToneManager.

具体来说,您使用

ringtoneManager.setActualDefaultringtoneUri(getApplicationContext(), ringtoneManager.TYPE_ringtone, newUri);

用于设置默认铃声.然后你用

ringtoneManager.setActualDefaultringtoneUri(getApplicationContext(), ringtoneManager.TYPE_NOTIFICATION, newUri);

用于设置默认通知声音.

这需要一个URI(统一资源标识符),它不是一个整数或ItemID,就像您的函数当前使用的那样.

从示例代码中,可以采取一些可能的选择.

第一种是将铃声标题作为字符串而不是ID传递给函数,然后调用ringtoneManager.getCursor()以获得所有可能的铃声列表,并检查每个铃声以查看标题匹配,如果匹配,则为匹配的标题设置URI.

第二种是基于所有可用铃声的光标和ID中的传递来列出选项,并使用ringtoneManager.getringtoneUri(ID)获取URI.一种执行此 *** 作的方法在Using SimpleCursorAdapter to Display Ringtones from RingtoneManager in Android Using ListView Templates中有详细说明

第三是使用ACTION_ringtone_PICKER,它具有相关的StackOverflow Question.

总结

以上是内存溢出为你收集整理的java-根据所选列表视图项的位置设置铃声全部内容,希望文章能够帮你解决java-根据所选列表视图项的位置设置铃声所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1089076.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存