【发布时间】:2016-05-14 19:21:16
【问题描述】:
我问了一个关于 Ionic 应用程序的问题,该应用程序的 HTML 音频流无法在某些 Android 手机上正常工作。
我发现问题出在 SE for Android 中的“强制”模式。
由于我没有找到任何解决 Ionic/Cordova 问题的方法,我决定使用原生 Android SDK 启动应用程序。
很遗憾,我在使用原生 SDK 时遇到了同样的问题:该流无法在“强制执行”中设置了 SE for Android 的手机中运行。
我发现有问题的手机是三星 Galaxy S6、三星 Galaxy S6 Edge、三星 Galaxy Note 5 和索尼 Xperia Z4。
这是app的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 对我来说不是一个选项。
【问题讨论】:
-
“我发现问题出在 SE for Android 中的“强制”模式”——嗯,你是怎么确定的?您的具体症状是什么?
-
因为在“Enforcing”中带有 SE for android 的手机是唯一不起作用的手机。抱歉,我在 google 上没有找到关于 SE Android 的太多信息。我根据使用 SELinux 的经验确定了这一点。
-
这并不能解释你的症状是什么。
-
症状是在 SE 处于“强制”模式的手机中,流永远不会启动。没有显示错误,或者没有其他任何内容,它只是不起作用。任何其他手机都可以完美运行,应用程序启动并开始播放流。