Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/212.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android,作为资源ID访问内部声音文件_Android_Resources_Audio - Fatal编程技术网

Android,作为资源ID访问内部声音文件

Android,作为资源ID访问内部声音文件,android,resources,audio,Android,Resources,Audio,我需要发送一些反馈给用户播放点击的声音。我正在尝试将MediaPlayer.create()与内置的OGG声音文件一起使用,主要是KeypressStandard.OGG 如何将这些文件称为资源id?文件应位于原始文件夹中,您可以使用R.raw.KeypressStandard通过id将其引用。文件应位于原始文件夹中,您可以使用R.raw.KeypressStandard通过id将其引用给对此问题感兴趣的任何人,找到了如下解决方案: MediaPlayer mp = MediaPlayer.cr

我需要发送一些反馈给用户播放点击的声音。我正在尝试将MediaPlayer.create()与内置的OGG声音文件一起使用,主要是KeypressStandard.OGG


如何将这些文件称为资源id?

文件应位于原始文件夹中,您可以使用
R.raw.KeypressStandard
通过id将其引用。文件应位于原始文件夹中,您可以使用
R.raw.KeypressStandard
通过id将其引用给对此问题感兴趣的任何人,找到了如下解决方案:

MediaPlayer mp = MediaPlayer.create(getApplicationContext(), Uri.parse("/system/media/audio/ui/Effect_Tick.ogg") );
mp.start();
我在一个AsyncTask中触发了这个命令,在这个任务中我做视觉反馈杂务,在onPreExecute()中我绘制“选定”状态,播放单击声音并等待300毫秒。在onPostExecute()中,我重新绘制了对象并释放了资源,效果非常好,示例代码:

private class FeedbackHandler extends AsyncTask<Void,Void,Void>{
    MediaPlayer mp;

    @Override
    protected Void doInBackground(Void... arg0) {
    return null;

    }

    @Override
    protected void onPostExecute(Void result) {
    super.onPostExecute(result);

    mp.release(); // free resources
    mp=null; // help GC
    myDrawUnselectedState(myObject); // draw normal state
    ImageView iv = (ImageView) findViewById(R.id.myobjectcontainer);
    iv.invalidate(); // mark UI for refresh
    }

    @Override
    protected void onPreExecute() {
    super.onPreExecute();

    myDrawSelectedState(myObject); // draw selected
    ImageView iv = (ImageView) findViewById(R.id.mycontainer);
    iv.invalidate(); // mark for refreshing
    mp = MediaPlayer.create(getApplicationContext(), Uri.parse("/system/media/audio/ui/Effect_Tick.ogg") );
    mp.start(); // play sound
    SystemClock.sleep(300); // wait a little bit for user to see effect
    }       
}
私有类反馈处理程序扩展异步任务{
MediaPlayer mp;
@凌驾
受保护的Void doInBackground(Void…arg0){
返回null;
}
@凌驾
受保护的void onPostExecute(void结果){
super.onPostExecute(结果);
mp.release();//可用资源
mp=null;//帮助GC
myDrawUnselectedState(myObject);//绘制正常状态
ImageView iv=(ImageView)findViewById(R.id.myobjectcontainer);
iv.invalidate();//标记要刷新的UI
}
@凌驾
受保护的void onPreExecute(){
super.onPreExecute();
myDrawSelectedState(myObject);//绘制选定对象
ImageView iv=(ImageView)findViewById(R.id.mycontainer);
iv.invalidate();//刷新标记
mp=MediaPlayer.create(getApplicationContext(),Uri.parse(“/system/media/audio/ui/Effect_Tick.ogg”);
mp.start();//播放声音
SystemClock.sleep(300);//稍等一下,让用户看到效果
}       
}

顺便说一句,Effect_Tick.ogg是当你按下按钮时触发的。似乎这些文件名几乎都是Android标准的,在许多使用Android版权免责声明签署的不同设备中都可以找到。

对于任何对此问题感兴趣的人,都可以找到如下解决方案:

MediaPlayer mp = MediaPlayer.create(getApplicationContext(), Uri.parse("/system/media/audio/ui/Effect_Tick.ogg") );
mp.start();
我在一个AsyncTask中触发了这个命令,在这个任务中我做视觉反馈杂务,在onPreExecute()中我绘制“选定”状态,播放单击声音并等待300毫秒。在onPostExecute()中,我重新绘制了对象并释放了资源,效果非常好,示例代码:

private class FeedbackHandler extends AsyncTask<Void,Void,Void>{
    MediaPlayer mp;

    @Override
    protected Void doInBackground(Void... arg0) {
    return null;

    }

    @Override
    protected void onPostExecute(Void result) {
    super.onPostExecute(result);

    mp.release(); // free resources
    mp=null; // help GC
    myDrawUnselectedState(myObject); // draw normal state
    ImageView iv = (ImageView) findViewById(R.id.myobjectcontainer);
    iv.invalidate(); // mark UI for refresh
    }

    @Override
    protected void onPreExecute() {
    super.onPreExecute();

    myDrawSelectedState(myObject); // draw selected
    ImageView iv = (ImageView) findViewById(R.id.mycontainer);
    iv.invalidate(); // mark for refreshing
    mp = MediaPlayer.create(getApplicationContext(), Uri.parse("/system/media/audio/ui/Effect_Tick.ogg") );
    mp.start(); // play sound
    SystemClock.sleep(300); // wait a little bit for user to see effect
    }       
}
私有类反馈处理程序扩展异步任务{
MediaPlayer mp;
@凌驾
受保护的Void doInBackground(Void…arg0){
返回null;
}
@凌驾
受保护的void onPostExecute(void结果){
super.onPostExecute(结果);
mp.release();//可用资源
mp=null;//帮助GC
myDrawUnselectedState(myObject);//绘制正常状态
ImageView iv=(ImageView)findViewById(R.id.myobjectcontainer);
iv.invalidate();//标记要刷新的UI
}
@凌驾
受保护的void onPreExecute(){
super.onPreExecute();
myDrawSelectedState(myObject);//绘制选定对象
ImageView iv=(ImageView)findViewById(R.id.mycontainer);
iv.invalidate();//刷新标记
mp=MediaPlayer.create(getApplicationContext(),Uri.parse(“/system/media/audio/ui/Effect_Tick.ogg”);
mp.start();//播放声音
SystemClock.sleep(300);//稍等一下,让用户看到效果
}       
}

顺便说一句,Effect_Tick.ogg是当你按下按钮时触发的。看起来这些文件名几乎都是Android标准的,在许多使用Android版权免责声明签署的不同设备中都可以找到。

如果你想使用你的设备资源,你可以使用RingtoneManager或ToneGenerator,不必硬编码就可以获得它们

Uri sound_uri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION)

你也可以在网上寻找免费的音频文件。选中此项:

如果您想使用设备资源,可以使用RingtoneManager或ToneGenerator,无需硬编码即可获得这些资源

Uri sound_uri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION)

你也可以在网上寻找免费的音频文件。选中此项:

我知道,我想使用内置的声音,如/system/media/audio/ui/KeypressStandard.ogg。有什么线索吗?我建议你把这个文件复制到你的应用程序中,因为不是所有的android手机都有这个声音文件。。。并检查版权:).Nevermind,找到了如何操作->MediaPlayer.create(getApplicationContext(),Uri.parse(“/system/media/audio/ui/KeypressStandard.ogg”);我知道,我想使用内置的声音,比如/system/media/audio/ui/KeypressStandard.ogg。有什么线索吗?我建议你把这个文件复制到你的应用程序中,因为不是所有的android手机都有这个声音文件。。。并检查版权:).Nevermind,找到了如何操作->MediaPlayer.create(getApplicationContext(),Uri.parse(“/system/media/audio/ui/KeypressStandard.ogg”);