我已经构建了一个部署在 android google playstore 中的音频播放器。我正在使用 crashlytics 来监控崩溃和 ANR。最近我遇到了很多 MediaButtonReceiver 崩溃的情况。耳机的咔嗒声在许多设备上都能正常工作。但有些设备会出现这个问题。
Crashlytics 报告 -
Fatal Exception: java.lang.RuntimeException: Unable to start receiver android.support.v4.media.session.MediaButtonReceiver: java.lang.IllegalStateException: Could not find any Service that handles android.intent.action.MEDIA_BUTTON or implements a media browser service.
at android.app.ActivityThread.handleReceiver(ActivityThread.java:2866)
at android.app.ActivityThread.access$1700(ActivityThread.java:182)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1551)
at android.os.Handler.dispatchMessage(Handler.java:111)
at android.os.Looper.loop(Looper.java:194)
at android.app.ActivityThread.main(ActivityThread.java:5706)
at java.lang.reflect.Method.invoke(Method.java)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1033)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:828)
Run Code Online (Sandbox Code Playgroud)
媒体会话代码 -
private void initMediaSession() throws RemoteException {
if (mediaSessionManager != null) return; //mediaSessionManager exists
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
mediaSessionManager = (MediaSessionManager) getSystemService(Context.MEDIA_SESSION_SERVICE); …Run Code Online (Sandbox Code Playgroud) android audio-player headset android-mediaplayer android-mediasession
我的 Android 应用程序正在播放音频,同时该应用程序在后台运行,并有一个作为前台运行的服务,类似于许多其他应用程序,例如 Google Play Music、Spotify 和其他音乐播放器/播客播放器应用程序。
我检查过的大多数应用程序(包括 Google Play Music)即使在最近清除应用程序后也会使服务保持运行状态。另一方面,有些会停止音频并关闭服务(我只发现 Spotify 这样做)。
我想知道处理这个问题的正确方法是什么?尽管大多数应用程序都将服务保持打开状态,但用户似乎希望音频停止并且通知与应用程序一起从状态栏消失。
这里有正确的方法吗?
我一直在尝试在 Recact.js 中播放音频文件,但它无法播放。我没有遇到任何错误,滚动条显示,但播放按钮不起作用。我尝试播放该歌曲以检查文件是否已损坏。mp3 文件工作正常。
import React from 'react'
class AudioPlayer extends React.Component {
render() {
return (
<div>
<audio ref="audio_tag" src="./abc.mp3" controls autoPlay/>
</div>
);
}
}
export default AudioPlayer;
Run Code Online (Sandbox Code Playgroud) 我目前正在 React 上制作一个音乐播放器应用程序,并且是 React js 的新手。不知道为什么我会收到此错误,因为我一直按照我正在观看的教程中的确切步骤进行操作。
完整的错误代码是:
Module not found: Error: You attempted to import ../components/Player which falls outside of the project src/ directory. Relative imports outside of src/ are not supported.
You can either move it inside src/, or add a symlink to it from project's node_modules/.
Run Code Online (Sandbox Code Playgroud)
为了更清楚起见,这是 Player 组件的代码:
import React from 'react';
import PlayerDetails from './PlayerDetails';
function Player(props) {
return (
<div className="c-player">
<audio></audio>
<h4>Now playing</h4>
<PlayerDetails song={props.song}/>
{/*CONTROLS */}
<p><strong> Next Up:</strong> {props.nextSong.title} {props.nextSong.artist}</p>
</div>
); …Run Code Online (Sandbox Code Playgroud) 我将在以下位置进行申请:
简而言之,我需要同时具有用于记录和播放的循环缓冲区,并且需要每20毫秒左右将即将播放的新数据“馈入”输出缓冲区。
我一直在看DirectSound,但似乎并没有太大帮助。读取和写入输出缓冲区似乎与Win32非常相似,唯一似乎可以帮助在主歌曲上播放“其他声音”的地方。
我应该使用DirectSound,还是应该直接使用原始Windows API?
DirectSound会为我做任何事情吗?
提前致谢!
对于一个学校项目,我需要创建一个程序,如果它可以包含一些声音效果会很好.我们正在使用C#(和Visual C#Express Edition 2008 Edition)对我们的程序进行编码,我想知道是否还可以在不安装DirectX SDK的情况下播放简短的音频文件.
在我们的学校计算机上,我们没有足够的权限来安装任何SDK,我们必须使用这些计算机进行开发.有没有办法播放没有DirectX SDK的音频文件?
我在AS3中有一个工作的麦克风录音脚本,我已经成功地通过AMF将.wav文件保存到服务器.这些文件在任何音频播放器中都能正常播放,没有奇怪的效果.
作为参考,我正在做的是捕捉麦克风的ByteArray :(在一个名为AudioRecorder的类中)
public function startRecording():void {
_rawData = new ByteArray();
_microphone
.addEventListener(SampleDataEvent.SAMPLE_DATA,_samplesCaptured, false, 0, true);
}
private function _samplesCaptured(e:SampleDataEvent):void {
_rawData.writeBytes(e.data);
}
Run Code Online (Sandbox Code Playgroud)
这没有问题.录制完成后,我可以使用_rawData变量并通过WavWriter类等运行它.
但是,如果我使用以下代码运行同样的ByteArray作为声音我从adobe cookbook改编:(在一个名为WavPlayer的类中)
public function playSound(data:ByteArray):void {
_wavData = data;
_wavData.position = 0;
_sound.addEventListener(SampleDataEvent.SAMPLE_DATA, _playSoundHandler);
_channel = _sound.play();
_channel
.addEventListener(Event.SOUND_COMPLETE, _onPlaybackComplete, false, 0, true);
}
private function _playSoundHandler(e:SampleDataEvent):void {
if(_wavData.bytesAvailable <= 0) return;
for(var i:int = 0; i < 8192; i++) {
var sample:Number = 0;
if(_wavData.bytesAvailable > 0) sample = _wavData.readFloat();
e.data.writeFloat(sample);
}
}
Run Code Online (Sandbox Code Playgroud)
音频文件以双倍速度播放!我检查了记录比特率等等,我很确定这些都是正确的,我尝试改变缓冲区大小和我能想到的任何其他数字.它可能是单声道与立体声的东西吗?
希望我在这里很清楚,谢谢!
我想开发一个预设均衡器(非图形),并设置为古典,爵士,普通,摇滚(这些都在旋转器中表示).有人可以帮我解决这个问题.
我有一个使用以下语法链接到歌曲的音乐播放器:
<li><a href="" data-src="http://s3.amazonaws.com/audiojs/02-juicy-r.mp3">title</a></li>
Run Code Online (Sandbox Code Playgroud)
有没有办法让我可以执行服务器端,然后为用户显示(如下所示)?
在搜索时,我碰到了这个...我喜欢有一个外部文件背后有这个数据的想法...像:
<?php
// get-file.php
// call with: http://yoururl.com/path/get-file.php?id=1
$id = (isset($_GET["id"])) ? strval($_GET["id"]) : "1";
// lookup
$url[1] = 'link.mp3';
$url[2] = 'link2.mp3';
header("Location: $url[$id]");
exit;
?>
Run Code Online (Sandbox Code Playgroud)
然后使用:http://yoururl.com/path/get-file.php?id = 1作为链接...唯一的问题是当你输入http://yoururl.com/path/get-file时. php?id = 1用户直接进入文件...是否有任何方法可以禁用该功能......也许是get-file.php本身的一些代码?
现在我有一个网站,使用jPlayer来播放mp3.我还希望能够直接在播放器上添加SoundCloud流的功能.
我知道这是可能的,因为我最喜欢的音乐博客之一hillydilly这样做.通过查看他们的代码,我看到他们的jPlayer设置有一些额外的参数,即sc和sclink.
$(".play-music").each(function(){
myPlaylist.add({
title: $(this).attr('data-title'),
artist: $(this).attr('data-artist'),
mp3: $(this).attr('data-mp3'),
url: $(this).attr('data-url'),
sc: $(this).attr('data-sc'),
sclink: $(this).attr('data-sclink')
});
});
Run Code Online (Sandbox Code Playgroud)
我试着查看其余代码,但无法弄清楚他们如何或在何处实现sc和sclink.有帮助吗?
audio-player ×10
android ×3
audio ×2
javascript ×2
reactjs ×2
c# ×1
css ×1
directsound ×1
flash ×1
headset ×1
hide ×1
html ×1
html5 ×1
jplayer ×1
jsx ×1
mp3 ×1
php ×1
soundcloud ×1
wav ×1
winapi ×1