Я пытаюсь открыть аудиопоток с URL внутри приложения для Android? - PullRequest
0 голосов
/ 15 мая 2019

Мне нужно активно связать потоковое аудио внутри моего приложения, чтобы оно воспроизводилось внутри моего приложения.

Когда мой подход к webView не сработал, и я не смог найти рабочее решение здесь, я расширил сферу инашел другой метод (https://android - examples.blogspot.com/2017/08/android-play-audio-from-url-http.html), но он не сработал.Поэтому я вернулся к методу webView и включил весь применимый код ниже.

java-файл активности

package com.app.sega;

import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import androidx.appcompat.app.AppCompatActivity;

public class wvop extends AppCompatActivity {
    private WebView webview_v;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_wvop);

        webview_v = (WebView) findViewById(R.id.webview_wvop);
        webview_v.setInitialScale(1);
        webview_v.setWebViewClient(new WebViewClient_v());
        webview_v.getSettings().getJavaScriptEnabled();
        webview_v.getSettings().getLoadWithOverviewMode();
        webview_v.getSettings().setUseWideViewPort(true);
        webview_v.getSettings().setAllowFileAccess(true);
        webview_v.getSettings().setAllowFileAccessFromFileURLs(true);
        webview_v.getSettings().setAllowContentAccess(true);
        webview_v.setScrollbarFadingEnabled(false);
        webview_v.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
        webview_v.getSettings().getBuiltInZoomControls();
        webview_v.getSettings().getUseWideViewPort();
        webview_v.getSettings().setDomStorageEnabled(true);
        webview_v.getSettings().setUserAgentString("silly_that_i_have_to_do_this");
        webview_v.loadUrl("https://us7.maindigitalstream.com/2782/");
    }

    private class WebViewClient_v extends WebViewClient {

        public boolean shouldOverrideURLLoading (WebView view, String url) {
            if (Uri.parse(url).getHost().equals("https://us7.maindigitalstream.com/2782/")) {
                return false;
            }else {
                Intent intent_wvop = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
                startActivity(intent_wvop);
                return true;
            }
        }
    }
}

макет xml активности

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <WebView android:id="@+id/webview_wvop"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</LinearLayout>

манифест андроида

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="com.app.sega">

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="andoir.permission.READ_PHONE_STATE" />
    <uses-permission android:name="andoir.permission.SYSTEM_ALERT_WINDOW" />
    <uses-permission android:name="andoir.permission.GET_ACCOUNTS" />
    <uses-permission android:name="andoir.permission.ACCESS_NETWORK_STATE" />

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher"
        android:theme="@style/AppTheme"
        tools:ignore="GoogleAppIndexingWarning">

        <activity
            android:name=".facebook"
            android:parentActivityName=".MainActivity"/>

        <activity
            android:name=".twitter"
            android:parentActivityName=".MainActivity"/>

        <activity
            android:name=".wyum"
            android:parentActivityName=".MainActivity"/>

        <activity
            android:name=".wtcq"
            android:parentActivityName=".MainActivity"/>

        <activity
            android:name=".wvop"
            android:parentActivityName=".MainActivity"/>

        <activity
            android:name=".sega"
            android:parentActivityName=".MainActivity"/>

        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <action android:name="android.intent.action.sega" />
                <action android:name="android.intent.action.wvop" />
                <action android:name="android.intent.action.wtcq" />
                <action android:name="android.intent.action.wyum" />
                <action android:name="android.intent.action.twitter" />
                <action android:name="android.intent.action.facebook" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

    </application>

</manifest>

Я ожидал, что приложение загрузит URL-адрес в веб-представлении, как и любой другой URL-адрес.Этот URL / веб-сайт имеет кнопку для открытия потока, но по умолчанию страница автоматически открывает поток и начинает воспроизведение потокового аудио при загрузке в любом браузере.Проблема: хотя я могу заставить страницу загружаться в веб-просмотре приложения, она не будет открываться и воспроизводить активный поток.Вместо этого я получаю красное сообщение об ошибке: «Произошла ошибка. Этот проигрыватель не работает без JavaScript!»и это сообщение имеет полупрозрачный фон, где я могу видеть страницу за ним.Таким образом, приложение загружает страницу, а не соответствующий ей javascript.Так что это именно то, что я получаю именно с кодом, показанным выше.Теперь, что происходит, когда я включаю javascript ...

В попытке включить javascript, чтобы исправить это сообщение об ошибке, добавив «true» в эту строку, например, так ... »webview_v.getSettings (). GetJavaScriptEnabled (true);»Я получаю следующую ошибку logCat при попытке запустить приложение на любом устройстве, фактическом или эмулированном.

error: method getJavaScriptEnabled in class WebSettings cannot be applied to given types;
        webview_v.getSettings().getJavaScriptEnabled(true);
                               ^
  required: no arguments
  found: boolean
  reason: actual and formal argument lists differ in length
1 error

Где я ошибаюсь в моих сценариях выше?Что я должен добавить, удалить, изменить и т. Д. Если этот метод веб-просмотра не будет работать или просто не предназначен для работы с такими сайтами, то как насчет этого метода (https://android - examples.blogspot.com/2017/08/android-play-audio-from-url-http.html)?Это приводило к сбою моего приложения, переходу на задний план без выхода из системы и выдаче этого сообщения об ошибке;Msgstr "Имя приложения" остановлено ".Я бы использовал его, если бы это сработало, но я также не могу понять, что с ним не так.

Я чувствую, что мои волосы становятся все тоньше и тоньше, когда я вытягиваю и вытягиваю свои волосы, пытаясьпонять это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...