声音从Smarthpone扬声器而不是Android自动扬声器播放



我是Android Auto的新手,仍在努力弄清楚。我已经成功地从我自己的编程应用程序播放音乐,但音乐是从我的智能手机扬声器而不是汽车扬声器发出的。其他(示例)应用以正确的方式执行此操作。

媒体系统的哪个部分负责处理此行为?Android文档说声音被发送到汽车扬声器。

   @Override
    public void onPlayFromMediaId(String mediaId, Bundle extras) {
        this.mPlayingQueue.add(item);
        session.setActive(true);
        session.setQueue(mPlayingQueue);
        session.setQueueTitle("My Queue");
        session.setPlaybackState(buildState(PlaybackState.ACTION_PLAY));
        session.setMetadata(createRammsteinMetaData());
        this.mediaPlayer = MediaPlayer.create(getBaseContext(), R.raw.rammstein_sonne);
        this.mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);

        if (tryToGetAudioFocus()) {
            this.mediaPlayer.start();
            Log.d("AUDIOTAG", "Playing");
        } else {
            Log.d("AUDIOTAG", "Playing not possible, no focus");
        }
    }
    private boolean tryToGetAudioFocus() {
        int result = audioManager.requestAudioFocus(this, AudioManager.STREAM_MUSIC, AudioManager.AUDIOFOCUS_GAIN);
        return result == AudioManager.AUDIOFOCUS_REQUEST_GRANTED;
    }

提前谢谢。奥林普

那里似乎有一个很大的错误!来自资源的本地音乐无法使用 MediaPlayer.create(...) 正确播放;

Thx Reaz Murshed我只是尝试将STREAM_MUSIC用作互联网音乐的真实流,并且它有效。翻译为将 setDataSource 与资源 URI 一起使用!使用以下代码片段:

    @Override
    public void onPlayFromMediaId(String mediaId, Bundle extras) {
        /* Set session stuff like queue, metadata and so on*/
        Uri myUri = resourceToUri(getBaseContext(), R.raw.rammstein_sonne);
        try {
            mediaPlayer = new MediaPlayer();
            mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
            mediaPlayer.setDataSource(getBaseContext(), myUri);
            mediaPlayer.prepareAsync();
            mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
                @Override
                public void onPrepared(MediaPlayer mp) {
                    if (tryToGetAudioFocus()) {
                        mediaPlayer.start();
                        Log.d("AUDIOTAG", "Playing");
                    } else {
                        Log.d("AUDIOTAG", "Playing not possible, no focus");
                    }
                }
            });
        } catch (IOException e) {
            e.printStackTrace();
            Log.d("AUTO", "EERORROR");
        }
    }
    public Uri resourceToUri(Context context, int resID) {
        return Uri.parse(ContentResolver.SCHEME_ANDROID_RESOURCE + "://" +
                context.getResources().getResourcePackageName(resID) + '/' +
                context.getResources().getResourceTypeName(resID) + '/' +
                context.getResources().getResourceEntryName(resID));
    }

最新更新