我正在尝试访问用户设备上的媒体文件(音乐)来播放它们; 一个简单的"你好世界" - 音乐播放器应用程序.
我已经按照一些教程,他们基本上给出了相同的代码.但它不起作用; 它一直在崩溃并告诉我:
error.....
Caused by: java.lang.SecurityException: Permission Denial: reading com.android.providers.media.MediaProvider uri content://media/external/audio/media from pid=27696, uid=10059 requires android.permission.READ_EXTERNAL_STORAGE, or grantUriPermission()
....
Run Code Online (Sandbox Code Playgroud)
现在,这是我的清单文件:
<?xml version="1.0" encoding="utf-8"?>
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
package="slimsimapps.troff" >
<uses-permission android:name="android.permission.MEDIA_CONTENT_CONTROL"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
Run Code Online (Sandbox Code Playgroud)
这是我的Java方法:
public void initialize() {
ContentResolver contentResolver = getContentResolver();
Uri uri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
Cursor cursor = contentResolver.query(uri, null, null, null, null); …Run Code Online (Sandbox Code Playgroud) java android audio-player android-music-player android-external-storage
我正在使用套接字作为MediaPlayer的代理,因此我可以在将mp3音频写入套接字之前下载并解密它.这类似于NPR新闻应用程序中显示的示例,但是我将其用于所有Android版本2.1 - 4 atm.
NPR StreamProxy代码 - http://code.google.com/p/npr-android-app/source/browse/Npr/src/org/npr/android/news/StreamProxy.java
我的问题是2.1-2.3的播放速度很快,但在Android 4.0 ICS中,MediaPlayer在触发onPrepared监听器之前会缓冲太多数据.
在onPrepared()之前写入Socket OutputStream的示例数据量:
在SGS2上有2.3.4 - onPrepared()在~133920字节之后
在Nexus S上使用4.0.4 - onPrepared()在~961930字节之后
这也发生在Galaxy Nexus上.
奇怪的是,4.0模拟器不会像4.0设备一样缓冲数据.有人在ICS上遇到与MediaPlayer类似的问题吗?
编辑
以下是代理如何写入套接字.在这个例子中,它来自从文件加载的CipherInputStream,但是当它从HttpResponse加载时也是如此.
final Socket client = (setup above)
// encrypted file input stream
final CipherInputStream inputStream = getInputStream(file);
// setup the socket output stream
final OutputStream output = client.getOutputStream();
// Writing the header
final String httpHeader = buildHttpHeader(file.length());
final byte[] buffer = httpHeader.getBytes("UTF-8");
output.write(buffer, 0, buffer.length);
int writtenBytes = 0;
int readBytes;
final byte[] buff = new …Run Code Online (Sandbox Code Playgroud) 我有一个字节[](从服务中下载),我的MP3文件,我想发挥它我的设备类似上你可以怎么玩的文件:
MediaPlayer mp = new MediaPlayer();
mp.setDataSource(PATH_TO_FILE);
mp.prepare();
mp.start();
Run Code Online (Sandbox Code Playgroud)
但我似乎无法找到办法.我不介意将文件保存到手机然后播放.我该如何播放文件,或下载然后播放?
我正在处理的应用程序播放音乐文件.如果计时器到期,我希望音乐淡出.我怎么做.我正在使用MediaPlayer播放音乐和音乐文件存在于我的应用程序的原始文件夹中.
我正在尝试接收有关iOS应用中当前播放曲目的信息.当iPhone 未连接到配件时,这非常好用.如果我将它连接到我的汽车(欧宝Astra,iPhone插孔),以下代码将停止工作,如文档中所述:
如果您创建iPod音乐播放器并且用户使用Home Sharing播放来自其他库的项目,则此属性的值为
nil.
码:
// nil while connected to an accessory
MPMediaItem *nowPlayingMediaItem =
[[MPMusicPlayerController iPodMusicPlayer] nowPlayingItem];
// Works while not connected to an accessory
NSString *title = [nowPlayingMediaItem valueForProperty:MPMediaItemPropertyTitle];
Run Code Online (Sandbox Code Playgroud)
我甚至试过"hacky"之类的东西,比如访问"私有"属性(原始代码):
MPMediaQuery *query=nil;
MPMediaItemCollection *collection=nil;
id internalPlayer=nil;
Ivar internalPlayeriVar = object_getInstanceVariable(iPod, "_internal", NULL);
internalPlayer = object_getIvar(iPod, internalPlayeriVar);
NSLog(@"internalPlayer: %@", internalPlayer);
Ivar queryIvar = object_getInstanceVariable(internalPlayer, "_query", NULL);
query = object_getIvar(internalPlayer, queryIvar); // nil everytime
Ivar collectionIvar = object_getInstanceVariable(internalPlayer,
"_itemCollection", NULL);
collection = object_getIvar(internalPlayer, …Run Code Online (Sandbox Code Playgroud) 我想创建一个音频混音器(DJ音乐曲目)类型的应用程序,可以创建一个音频歌曲的混音器.用户可以选择可以与两个或更多个单独的节奏,贝司或节拍音轨混合的音乐歌曲轨道来创建新的修改的Dj音乐.
我对此做了很多研究但是找不到任何想法或线索.
如果有人对此有一些想法或参考网址,请分享.
我正在开发一个用于音乐的iPhone应用程序.我想给用户一些选项,这样他们就可以通过流媒体收听歌曲/音乐,或者他们可以在应用程序中下载音乐.我知道如何以编程方式在应用程序中流式传输音频文件.但是,我不知道如何在应用程序中下载音频文件并在下载后播放音频.并且用户可以在下载时暂停下载.有可能吗?任何人都可以指导我,请为我分享任何示例代码或教程?我还有一个疑问:你可以帮我在应用程序内创建一个文件夹吗?请帮我.提前致谢.
有没有办法从我的应用程序开始在Google音乐播放器应用程序中播放歌曲?我正在尝试关注代码,但谷歌音乐播放器只打开搜索结果并且实际上不播放该歌曲.
Intent intent = new Intent();
intent.setAction(MediaStore.INTENT_ACTION_MEDIA_PLAY_FROM_SEARCH);
intent.putExtra(SearchManager.QUERY, "It's my life");
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.setPackage("com.google.android.music");
activity.startActivity(intent);
Run Code Online (Sandbox Code Playgroud)
INTENT_ACTION_MEDIA_PLAY_FROM_SEARCH的文档说明如下:意图执行搜索音乐媒体并尽可能自动播放结果中的内容.
所以,根据文档,它应该能够播放这首歌.但是,它只会打开搜索结果而不会播放.我在这里缺少什么想法?
谢谢你尽你所能的帮助.
我想从实时服务器播放音频.我不想下载这些音频文件.这些文件的格式是android java上的mp3.working.
是否有一种全局方法可以检测音频何时在浏览器中播放或开始播放。
类似的想法 if(window.mediaPlaying()){...
没有将代码绑定到特定元素?
编辑:这里重要的是无论音频来自何处,都能够检测到任何音频。无论是来自 iframe、视频、Web Audio API 等。
audio-player ×10
android ×7
audio ×3
ios ×2
media-player ×2
bytearray ×1
cocoa-touch ×1
download ×1
effects ×1
iphone ×1
java ×1
javascript ×1
mp3 ×1
soundeffect ×1
streaming ×1