2016-02-04 22 views
0

我已經問了一個關於一個Ionic應用與HTML音頻流,不能正常工作與某些Android手機的問題。如何啓用流媒體應用與SE的android

我已經確定問題是SE中針對Android的「強制」模式。

因爲我還沒有找到與Ionic/Cordova有關的問題的任何解決方案,所以我決定用原生Android SDK啓動該應用程序。

不幸的是,我遇到了與原生SDK相同的問題:該流不適用於在「強制」中設置的SE for Android手機。

我發現問題的手機有三星Galaxy S6,三星Galaxy S6 Edge,三星Galaxy Note 5和索尼Xperia Z4。

這是應用程序的Java代碼:

import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import java.io.IOException; 
import android.media.AudioManager; 
import android.media.MediaPlayer; 


public class Player extends AppCompatActivity { 
    private MediaPlayer mp; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_player); 
     mp = new MediaPlayer(); 
     mp.setAudioStreamType(AudioManager.STREAM_MUSIC); 
     try{ 
      mp.setDataSource("http://69.175.58.196:80/stream"); 
      mp.prepareAsync(); 
      mp.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { 
       @Override 
       public void onPrepared(MediaPlayer mp) { 
        mp.start(); 
       } 
      }); 
     } 
     catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 
} 

這是AndroidManifest.xml中的內容:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.goradio.ovoradioclub"> 
    <uses-permission android:name="android.permission.INTERNET"/> 
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 



    <application 
     android:allowBackup="true" 
     android:icon="@mipmap/ic_launcher" 
     android:label="@string/app_name" 
     android:supportsRtl="true" 
     android:theme="@style/AppTheme"> 
     <activity android:name=".Player"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
    </application> 

</manifest> 

這似乎是我的思念與SE的東西。

我也是Linux系統管理員,我知道處理SE的唯一方法是使用root訪問。

該應用程序的想法是免費在PlayStore中,所以人們可以只聽流,所以根設備禁用SE不是我的選擇。

+0

「我發現問題是安卓系統中的」強制「模式」 - 恩,你是怎麼確定的?你確切的症狀是什麼? – CommonsWare

+0

因爲帶有SE的Android手機在「強制」是唯一不起作用的手機。 對不起,我還沒有在google中找到關於SE Android的很多信息。我已經確定了基於SELinux的經驗。 –

+0

這並不能解釋你的症狀是什麼。 – CommonsWare

回答

0

這似乎是我失去了東西有關的東西。

我剛剛在運行Android 6.0的Nexus 5上運行您的代碼。 getenforce,在adb shell上運行,在此設備上顯示Enforcing。流播放很好。 對於Nexus 5X也是如此。

我不懷疑你在引用的設備上有問題。但是,看起來SE執行狀態是巧合,而不是問題的實際來源。

您可能希望查看LogCat以查看是否有任何有趣的消息。請注意,MediaPlayer傾向於以非常嚴重的方式記錄東西(例如,我認爲在警告嚴重性時會記錄錯誤)。此外,這些消息不會來自您的流程,因此請務必查看所有LogCat,而不是僅顯示您自己的流程的過濾視圖。

+0

不知道關於LogCat。 我會用它來測試,如果我找到任何解決方案,請在這裏寫下。 –