J'ai posé une question sur une application Ionic avec un flux audio HTML qui ne fonctionnait pas correctement avec certains téléphones Android.Comment activer l'application de streaming avec SE pour Android
J'ai identifié que le problème est le mode "Enforcing" dans SE pour Android.
Comme je n'ai trouvé aucune solution au problème avec Ionic/Cordova, j'ai décidé de lancer l'application avec le SDK Android natif.
Malheureusement, j'ai le même problème avec le SDK natif: le flux ne fonctionne pas dans les téléphones avec SE pour Android défini dans "Enforcing".
Les téléphones que j'ai identifiés avec le problème sont le Samsung Galaxy S6, le Samsung Galaxy S6 Edge, le Samsung Galaxy Note 5 et le Sony Xperia Z4.
Voici le code java de l'application:
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();
}
}
}
Et voici le contenu de 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>
Il est semble que je manque quelque chose lié à SE. Je suis également administrateur système Linux, et la seule façon que je connaisse pour faire face à SE est d'avoir un accès root.
L'idée de l'application est d'être dans le PlayStore gratuitement, donc les gens peuvent simplement écouter le flux, donc l'enracinement de l'appareil pour désactiver SE n'est pas une option pour moi.
"J'ai identifié que le problème est le mode" Enforcing "dans SE pour Android" - um, comment avez-vous déterminé cela? Quels sont vos symptômes exacts? – CommonsWare
Parce que les téléphones avec SE pour android dans "Enforcing" sont les seuls qui ne fonctionnent pas. Désolé, je n'ai pas trouvé beaucoup d'informations sur SE Android dans google. J'ai déterminé cela basé sur l'expérience avec SELinux. –
Cela n'explique pas quels sont vos symptômes. – CommonsWare