Log remote control exceptions, show version in Help

This commit is contained in:
Joshua Bahnsen 2013-01-25 01:13:02 -07:00
parent c21cec92ad
commit c58d1acf93
3 changed files with 130 additions and 120 deletions

View File

@ -1,8 +1,8 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:a="http://schemas.android.com/apk/res/android" <manifest xmlns:a="http://schemas.android.com/apk/res/android"
package="net.sourceforge.subsonic.androidapp" package="net.sourceforge.subsonic.androidapp"
a:versionCode="47" a:versionCode="56"
a:versionName="3.9.9.13" a:installLocation="auto"> a:versionName="3.9.9.14" a:installLocation="auto">
<uses-permission a:name="android.permission.INTERNET"/> <uses-permission a:name="android.permission.INTERNET"/>
<uses-permission a:name="android.permission.READ_PHONE_STATE"/> <uses-permission a:name="android.permission.READ_PHONE_STATE"/>

View File

@ -1,117 +1,126 @@
/* /*
This file is part of Subsonic. This file is part of Subsonic.
Subsonic is free software: you can redistribute it and/or modify Subsonic is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or the Free Software Foundation, either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
Subsonic is distributed in the hope that it will be useful, Subsonic is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details. GNU General Public License for more details.
You should have received a copy of the GNU General Public License You should have received a copy of the GNU General Public License
along with Subsonic. If not, see <http://www.gnu.org/licenses/>. along with Subsonic. If not, see <http://www.gnu.org/licenses/>.
Copyright 2009 (C) Sindre Mehus Copyright 2009 (C) Sindre Mehus
*/ */
package net.sourceforge.subsonic.androidapp.activity; package net.sourceforge.subsonic.androidapp.activity;
import android.app.Activity; import android.app.Activity;
import android.os.Bundle; import android.content.pm.PackageManager.NameNotFoundException;
import android.view.KeyEvent; import android.os.Bundle;
import android.view.View; import android.view.KeyEvent;
import android.view.Window; import android.view.View;
import android.webkit.WebView; import android.view.Window;
import android.webkit.WebViewClient; import android.webkit.WebView;
import android.widget.Button; import android.webkit.WebViewClient;
import net.sourceforge.subsonic.androidapp.R; import android.widget.Button;
import net.sourceforge.subsonic.androidapp.util.Util; import net.sourceforge.subsonic.androidapp.R;
import net.sourceforge.subsonic.androidapp.util.Util;
/**
* An HTML-based help screen with Back and Done buttons at the bottom. /**
* * An HTML-based help screen with Back and Done buttons at the bottom.
* @author Sindre Mehus *
*/ * @author Sindre Mehus
public final class HelpActivity extends Activity { */
public final class HelpActivity extends Activity {
private WebView webView;
private Button backButton; private WebView webView;
private Button backButton;
@Override
protected void onCreate(Bundle bundle) { @Override
super.onCreate(bundle); protected void onCreate(Bundle bundle) {
getWindow().requestFeature(Window.FEATURE_INDETERMINATE_PROGRESS); super.onCreate(bundle);
getWindow().requestFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
setContentView(R.layout.help);
setContentView(R.layout.help);
webView = (WebView) findViewById(R.id.help_contents);
webView.getSettings().setJavaScriptEnabled(true); webView = (WebView) findViewById(R.id.help_contents);
webView.setWebViewClient(new HelpClient()); webView.getSettings().setJavaScriptEnabled(true);
if (bundle != null) { webView.setWebViewClient(new HelpClient());
webView.restoreState(bundle); if (bundle != null) {
} else { webView.restoreState(bundle);
webView.loadUrl(getResources().getString(R.string.help_url)); } else {
} webView.loadUrl(getResources().getString(R.string.help_url));
}
backButton = (Button) findViewById(R.id.help_back);
backButton.setOnClickListener(new Button.OnClickListener() { backButton = (Button) findViewById(R.id.help_back);
@Override backButton.setOnClickListener(new Button.OnClickListener() {
public void onClick(View view) { @Override
webView.goBack(); public void onClick(View view) {
} webView.goBack();
}); }
});
Button doneButton = (Button) findViewById(R.id.help_close);
doneButton.setOnClickListener(new Button.OnClickListener() { Button doneButton = (Button) findViewById(R.id.help_close);
@Override doneButton.setOnClickListener(new Button.OnClickListener() {
public void onClick(View view) { @Override
finish(); public void onClick(View view) {
} finish();
}); }
} });
}
@Override
public void onResume() { @Override
super.onResume(); public void onResume() {
} super.onResume();
}
@Override
protected void onSaveInstanceState(Bundle state) { @Override
webView.saveState(state); protected void onSaveInstanceState(Bundle state) {
} webView.saveState(state);
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) { @Override
if (keyCode == KeyEvent.KEYCODE_BACK) { public boolean onKeyDown(int keyCode, KeyEvent event) {
if (webView.canGoBack()) { if (keyCode == KeyEvent.KEYCODE_BACK) {
webView.goBack(); if (webView.canGoBack()) {
return true; webView.goBack();
} return true;
} }
return super.onKeyDown(keyCode, event); }
} return super.onKeyDown(keyCode, event);
}
private final class HelpClient extends WebViewClient {
@Override private final class HelpClient extends WebViewClient {
public void onLoadResource(WebView webView, String url) { @Override
setProgressBarIndeterminateVisibility(true); public void onLoadResource(WebView webView, String url) {
setTitle(getResources().getString(R.string.help_loading)); setProgressBarIndeterminateVisibility(true);
super.onLoadResource(webView, url); setTitle(getResources().getString(R.string.help_loading));
} super.onLoadResource(webView, url);
}
@Override
public void onPageFinished(WebView view, String url) { @Override
setProgressBarIndeterminateVisibility(false); public void onPageFinished(WebView view, String url) {
setTitle(view.getTitle()); setProgressBarIndeterminateVisibility(false);
backButton.setEnabled(view.canGoBack()); String versionName = null;
}
try {
@Override versionName = getPackageManager().getPackageInfo(getPackageName(), 0).versionName;
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) { } catch (NameNotFoundException e) {
Util.toast(HelpActivity.this, description); e.printStackTrace();
} }
}
} setTitle(view.getTitle() + " (" + versionName + ")");
backButton.setEnabled(view.canGoBack());
}
@Override
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
Util.toast(HelpActivity.this, description);
}
}
}

View File

@ -772,6 +772,7 @@ public class DownloadServiceImpl extends Service implements DownloadService {
RemoteControlClient.FLAG_KEY_MEDIA_PAUSE | RemoteControlClient.FLAG_KEY_MEDIA_PAUSE |
RemoteControlClient.FLAG_KEY_MEDIA_NEXT | RemoteControlClient.FLAG_KEY_MEDIA_NEXT |
RemoteControlClient.FLAG_KEY_MEDIA_PREVIOUS | RemoteControlClient.FLAG_KEY_MEDIA_PREVIOUS |
RemoteControlClient.FLAG_KEY_MEDIA_PLAY_PAUSE |
RemoteControlClient.FLAG_KEY_MEDIA_STOP); RemoteControlClient.FLAG_KEY_MEDIA_STOP);
try { try {
@ -797,7 +798,7 @@ public class DownloadServiceImpl extends Service implements DownloadService {
.apply(); .apply();
} }
catch (Exception e) { catch (Exception e) {
// Log.e(TAG, "Exception in setRemoteControl");
} }
} }
} }