我是Android开发的新手,我有一个问题/疑问.
我正在玩MediaPlayer类来重现一些声音/音乐.我正在玩原始资源(res/raw),看起来很容易.
要播放原始资源,MediaPlayer必须像这样初始化:
MediaPlayer mp = MediaPlayer.create(appContext, R.raw.song);
mp.start();
直到这里没有问题.声音播放,一切正常.当我想为我的应用程序添加更多选项时,会出现我的问题.特别是当我添加"停止"按钮/选项时.
基本上,我想要做的是......当我按下"停止"时,音乐停止.当我按"开始"时,歌曲/声音重新开始.(非常基本!)
要停止媒体播放器,您只需要拨打电话stop().但要再次播放声音,媒体播放器必须重新制作并准备好.
mp.reset();
mp.setDataSource(params);
mp.prepare();
问题是该方法setDataSource()仅接受文件路径,内容提供者URI,流媒体URL路径或文件描述符作为参数.
因此,由于此方法不接受资源标识符,因此我不知道如何设置数据源以便调用prepare().另外,我不明白为什么你不能使用Resouce标识符来设置数据源,但是在初始化MediaPlayer时你可以使用资源标识符.
我想我错过了一些东西.我想知道我是否在混合概念,并且stop()不必在"停止"按钮中调用该方法.有帮助吗?
提前致谢!!!
我正在尝试为andriod开发的应用程序,以48Khz(PCM 16位和单声道)记录帧并将它们发送到网络.此外,还有一个8Khz的传入音频流.所以,我接收8Khz采样帧并播放它们(我的AudioTrack对象设置为8Khz),但是当它们播放时,一切正常,但延迟是巨大的.你听到的东西大约需要3秒钟.
我认为如果我将接收到的帧从8Khz上采样到48Khz并播放它们,那么就不会有如此巨大的播放延迟.事实上,当我以相同的速率录制和播放帧时,延迟非常低.坏事是我被迫这样做:发送到48Khz并接收到8Khz.
如前所述,我正在尝试将声音帧(16位PCM)从8Khz上采样到48Khz.有人知道Java中的任何例程/库/ API吗?
我知道关于对一个谨慎信号进行上采样的基础知识,但我认为设计和实现我自己的FIR滤波器并将其与音频流进行卷积....太过分了.而且,据我所知.
那么......有人能帮助我吗?有没有人知道我可以使用Java中的任何库/例程?任何建议或替代方案?
我是Android开发的新手,我有下一个问题/问题.
我正在玩MediaRecorder类来录制麦克风中的音频.我正在按照官方网站上指示的步骤操作:http://developer.android.com/reference/android/media/MediaRecorder.html
所以我有一个初始化和配置MediaRecorder对象的方法,以便开始录制.在这里你有代码:
//initializes audio recorder
MediaRecorder mrecorder = new MediaRecorder();
//configure the input sources
mrecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
//set the output format
mrecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
//set the audio encoding
mrecorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);
//specify the output file
mrecorder.setOutputFile("/sdcard/test.3gp");
//prepare for recording
try {
mrecorder.prepare();
} catch (IllegalStateException e) {
e.printStackTrace();
Log.d("Syso". e.toString());
} catch (IOException e) {
e.printStackTrace();
Log.d("Syso". e.toString());
}
Run Code Online (Sandbox Code Playgroud)
当我在模拟器中执行此代码时,感谢logcat,我可以看到方法prepare()在调用时给出异常:
java.io.FileNotFoundException: /sdcard/test.3gp (Permission denied)
Run Code Online (Sandbox Code Playgroud)
我不知道为什么会这样.由于异常消息,我通过在xml中添加以下行来在清单中授予访问存储的权限:
<uses-permission android:name="android.permission.STORAGE" />
Run Code Online (Sandbox Code Playgroud)
但这并没有解决任何问题,我仍然会一直得到同样的例外.SDCard是根据模拟器安装的,所以我不知道.
android exception audio-recording permission-denied mediarecorder
我正在尝试使用一些菜单创建一个应用程序,我正在关注官方android站点中提供的基本示例:
http://developer.android.com/guide/topics/ui/menus.html
当我在XML中定义菜单时出现我的问题.创建文件夹res/menu并从eclipse创建menu_option.xml文件后....项目(通常)给出了一个错误,可以从Problems选项卡中读取:
Unparsed aapt error(s)! Check the console for output
Android Packaging Problem
因此,更改为"控制台"选项卡以获取有关该问题的更多信息,可以阅读:
[2010-06-02 11:35:54 - TestAudio] Error in an XML file: aborting build.
[2010-06-02 11:35:54 - TestAudio] W/ResourceType(11566): Bad XML block: header size 63327 or total size -144759824 is larger than data size 0
[2010-06-02 11:35:54 - TestAudio] /home/User/workspace/TestAudio/res/menu/options_menu.xml:1: error: Error parsing XML: no element found
奇怪的是,eclipse识别我在XML中定义的菜单项,我可以在代码中引用它们而没有任何问题,我的主要活动构建.(以及其他文件).
可能是因为当eclipse创建文件时,出于某种原因,Android SDK有读取它的问题,或类似的东西?
XML代码与示例中的代码完全相同,所以我真的不知道发生了什么.options_menu.xml中的代码是这样的:
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/new_game"
android:title="New Game" />
<item android:id="@+id/quit"
android:title="Quit" />
</menu>
在此先感谢您的帮助!
我正在尝试将短路转换为2个字节...然后从这2个字节尝试获得相同的短路值.为此,我写了这段代码:
short oldshort = 700;
byte 333= (byte) (oldshort);
byte byte2= (byte) ((oldshort >> 8) & 0xff);
short newshort = (short) ((byte2 << 8) + byte1);
System.out.println(oldshort);
System.out.println(newshort);
Run Code Online (Sandbox Code Playgroud)
对于700(oldshort)的值,newhosrt是444.经过一些测试后,它看起来像这样的代码只适用于某些值.就像...如果oldshort = 50,那么它将正常工作..但如果它是-200,或更大的值超过127(我认为)它不起作用.我想有签名字节,二进制补码等问题...但我无法弄清楚如何解决它.
任何的想法??在java中以任何本地方式执行此操作?提前致谢!
我是android开发的新手,我正在试用官方android站点中的WebView示例.
http://developer.android.com/guide/tutorials/views/hello-webview.html
但我做他们说的一切......这很简单:我创建项目,编辑布局文件,然后我添加代码等等.没有问题构建...但是当我在模拟器中启动应用程序时我才刚刚得到黑屏.就像布局是空的一样......就像没有创建WebView一样.
我究竟做错了什么?