Как остановить или приостановить Pandora и SpotifyAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Как остановить или приостановить Pandora и Spotify

Сообщение Anonymous »

У меня есть приложение, в котором есть функция запуска приложения, станции Pandora или ярлыка. Все работает нормально. Позже я хочу остановить запущенное приложение. Это работает для большинства вещей, за исключением того, что Pandora и Spotify не всегда закрываются. Иногда они это делают, но не всегда. Похоже, это связано с текущим состоянием пользовательского интерфейса. Например, он отлично работает, когда у меня отображается Pandora или отображается главный экран. Когда активна домашняя док-станция или режим автомобиля, они не работают. Вы можете увидеть весь мой исходный код здесь: http://code.google.com/p/a2dpvolume/
service.java — это файл, обладающий этой функциональностью.

Вот часть этого кода, которая пытается остановить воспроизведение музыки, а затем остановить приложение.

Код: Выделить всё

if (bt2.hasIntent()) {
// if music is playing, pause it
if (am2.isMusicActive()) {
// first pause the music so it removes the notify icon
Intent i = new Intent("com.android.music.musicservicecommand");
i.putExtra("command", "pause");
sendBroadcast(i);
// for more stubborn players, try this too...
Intent downIntent2 = new Intent(Intent.ACTION_MEDIA_BUTTON, null);
KeyEvent downEvent2 = new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_MEDIA_STOP);
downIntent2.putExtra(Intent.EXTRA_KEY_EVENT, downEvent2);
sendOrderedBroadcast(downIntent2, null);
}

// if we opened a package for this device, try to close it now
if (bt2.getPname().length() > 3 && bt2.isAppkill()) {
// also open the home screen to make music app revert to
// background
Intent startMain = new Intent(Intent.ACTION_MAIN);
startMain.addCategory(Intent.CATEGORY_HOME);
startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(startMain);
// now we can kill the app is asked to

final String kpackage = bt2.getPname();
CountDownTimer killTimer = new CountDownTimer(6000, 3000) {
@Override
public void onFinish() {
try {
stopApp(kpackage);
} catch (Exception e) {
e.printStackTrace();
Log.e(LOG_TAG, "Error " + e.getMessage());
}
}

@Override
public void onTick(long arg0) {

if (am2.isMusicActive()) {

// for more stubborn players, try this too...
Intent downIntent2 = new Intent(Intent.ACTION_MEDIA_BUTTON, null);
KeyEvent downEvent2 = new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_MEDIA_STOP);
downIntent2.putExtra(Intent.EXTRA_KEY_EVENT, downEvent2);
sendOrderedBroadcast(downIntent2, null);
}

try {
stopApp(kpackage);
} catch (Exception e) {
e.printStackTrace();
Log.e(LOG_TAG, "Error " + e.getMessage());
}
}
};
killTimer.start();

}
}
Вот функция stopApp().

Код: Выделить всё

protected void stopApp(String packageName) {
Intent mIntent = getPackageManager().getLaunchIntentForPackage(
packageName);
if (mIntent != null) {
try {

ActivityManager act1 = (ActivityManager) this
.getSystemService(ACTIVITY_SERVICE);
// act1.restartPackage(packageName);
act1.killBackgroundProcesses(packageName);
List processes;
processes = act1.getRunningAppProcesses();
for (ActivityManager.RunningAppProcessInfo info : processes) {
for (int i = 0; i < info.pkgList.length; i++) {
if (info.pkgList[i].contains(packageName)) {
android.os.Process.killProcess(info.pid);
}
}
}
} catch (ActivityNotFoundException err) {
err.printStackTrace();
Toast t = Toast.makeText(getApplicationContext(),
R.string.app_not_found, Toast.LENGTH_SHORT);
if (notify)
t.show();
}

}
}
Кто-нибудь еще сталкивался с этой проблемой? Как я могу надежно остановить запущенное приложение? Мне нужно сначала поставить его на паузу и перевести его в фоновый режим. Это проблема, с которой я столкнулся. Это работает в большинстве ситуаций, но не во всех. В некоторых случаях Pandora и Spotify не отвечают на отправленное ключевое событие и просто продолжают играть. Это сохраняет значок уведомления активным и делает приложение активным на переднем плане, поэтому я не могу его остановить.

Подробнее здесь: https://stackoverflow.com/questions/103 ... nd-spotify
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»