Merge branch 'v0.21.x'
This commit is contained in:
commit
bc5d4f9494
5
NEWS
5
NEWS
|
@ -8,6 +8,11 @@ ver 0.22 (not yet released)
|
||||||
- ffmpeg: new plugin based on FFmpeg's libavfilter library
|
- ffmpeg: new plugin based on FFmpeg's libavfilter library
|
||||||
- hdcd: new plugin based on FFmpeg's "af_hdcd" for HDCD playback
|
- hdcd: new plugin based on FFmpeg's "af_hdcd" for HDCD playback
|
||||||
|
|
||||||
|
ver 0.21.9 (not yet released)
|
||||||
|
* Android
|
||||||
|
- fix crash on ARMv7
|
||||||
|
- request storage permission on Android 6+
|
||||||
|
|
||||||
ver 0.21.8 (2019/04/23)
|
ver 0.21.8 (2019/04/23)
|
||||||
* input
|
* input
|
||||||
- smbclient: download to buffer instead of throttling transfer
|
- smbclient: download to buffer instead of throttling transfer
|
||||||
|
|
|
@ -2,8 +2,8 @@
|
||||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
package="org.musicpd"
|
package="org.musicpd"
|
||||||
android:installLocation="auto"
|
android:installLocation="auto"
|
||||||
android:versionCode="30"
|
android:versionCode="32"
|
||||||
android:versionName="0.21.8">
|
android:versionName="0.21.9">
|
||||||
|
|
||||||
<uses-sdk android:minSdkVersion="21" android:targetSdkVersion="26"/>
|
<uses-sdk android:minSdkVersion="21" android:targetSdkVersion="26"/>
|
||||||
|
|
||||||
|
|
|
@ -138,6 +138,12 @@ class AndroidNdkToolchain:
|
||||||
libstdcxx_ldflags = libstdcxx_flags + ' -L' + libcxx_libs_path
|
libstdcxx_ldflags = libstdcxx_flags + ' -L' + libcxx_libs_path
|
||||||
libstdcxx_libs = '-lc++_static -lc++abi'
|
libstdcxx_libs = '-lc++_static -lc++abi'
|
||||||
|
|
||||||
|
if self.is_armv7:
|
||||||
|
# On 32 bit ARM, clang generates no ".eh_frame" section;
|
||||||
|
# instead, the LLVM unwinder library is used for unwinding
|
||||||
|
# the stack after a C++ exception was thrown
|
||||||
|
libstdcxx_libs += ' -lunwind'
|
||||||
|
|
||||||
if use_cxx:
|
if use_cxx:
|
||||||
self.cxxflags += ' ' + libstdcxx_cxxflags
|
self.cxxflags += ' ' + libstdcxx_cxxflags
|
||||||
self.ldflags += ' ' + libstdcxx_ldflags
|
self.ldflags += ' ' + libstdcxx_ldflags
|
||||||
|
|
|
@ -6,7 +6,7 @@ android_sdk = get_option('android_sdk')
|
||||||
android_abi = get_option('android_abi')
|
android_abi = get_option('android_abi')
|
||||||
|
|
||||||
android_sdk_build_tools_version = '27.0.0'
|
android_sdk_build_tools_version = '27.0.0'
|
||||||
android_sdk_platform = 'android-21'
|
android_sdk_platform = 'android-23'
|
||||||
|
|
||||||
android_build_tools_dir = join_paths(android_sdk, 'build-tools', android_sdk_build_tools_version)
|
android_build_tools_dir = join_paths(android_sdk, 'build-tools', android_sdk_build_tools_version)
|
||||||
android_sdk_platform_dir = join_paths(android_sdk, 'platforms', android_sdk_platform)
|
android_sdk_platform_dir = join_paths(android_sdk, 'platforms', android_sdk_platform)
|
||||||
|
|
|
@ -21,10 +21,12 @@ package org.musicpd;
|
||||||
|
|
||||||
import java.util.LinkedList;
|
import java.util.LinkedList;
|
||||||
|
|
||||||
|
import android.Manifest;
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.SharedPreferences;
|
import android.content.SharedPreferences;
|
||||||
import android.content.SharedPreferences.Editor;
|
import android.content.SharedPreferences.Editor;
|
||||||
|
import android.content.pm.PackageManager;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
import android.os.Message;
|
import android.os.Message;
|
||||||
|
@ -178,6 +180,14 @@ public class Settings extends Activity {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
|
/* TODO: this sure is the wrong place to request
|
||||||
|
permissions - it will cause MPD to quit
|
||||||
|
immediately; we should request permissions when we
|
||||||
|
need them, but implementing that is complicated, so
|
||||||
|
for now, we do it here to give users a quick
|
||||||
|
solution for the problem */
|
||||||
|
requestAllPermissions();
|
||||||
|
|
||||||
setContentView(R.layout.settings);
|
setContentView(R.layout.settings);
|
||||||
mRunButton = (ToggleButton) findViewById(R.id.run);
|
mRunButton = (ToggleButton) findViewById(R.id.run);
|
||||||
mRunButton.setOnCheckedChangeListener(mOnRunChangeListener);
|
mRunButton.setOnCheckedChangeListener(mOnRunChangeListener);
|
||||||
|
@ -203,6 +213,31 @@ public class Settings extends Activity {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void checkRequestPermission(String permission) {
|
||||||
|
if (checkSelfPermission(permission) == PackageManager.PERMISSION_GRANTED)
|
||||||
|
return;
|
||||||
|
|
||||||
|
try {
|
||||||
|
this.requestPermissions(new String[]{permission}, 0);
|
||||||
|
} catch (Exception e) {
|
||||||
|
Log.e(TAG, "requestPermissions(" + permission + ") failed",
|
||||||
|
e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void requestAllPermissions() {
|
||||||
|
if (android.os.Build.VERSION.SDK_INT < 23)
|
||||||
|
/* we don't need to request permissions on
|
||||||
|
this old Android version */
|
||||||
|
return;
|
||||||
|
|
||||||
|
/* starting with Android 6.0, we need to explicitly
|
||||||
|
request all permissions before using them;
|
||||||
|
mentioning them in the manifest is not enough */
|
||||||
|
|
||||||
|
checkRequestPermission(Manifest.permission.READ_EXTERNAL_STORAGE);
|
||||||
|
}
|
||||||
|
|
||||||
private void connectClient() {
|
private void connectClient() {
|
||||||
mClient = new Main.Client(this, new Main.Client.Callback() {
|
mClient = new Main.Client(this, new Main.Client.Callback() {
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue