Home | History | Annotate | Download | only in musicfx
      1 /*
      2  * Copyright (C) 2010-2011 The Android Open Source Project
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * You may obtain a copy of the License at
      7  *
      8  *      http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13  * See the License for the specific language governing permissions and
     14  * limitations under the License.
     15  */
     16 
     17 package com.android.musicfx;
     18 
     19 import android.content.BroadcastReceiver;
     20 import android.content.Context;
     21 import android.content.Intent;
     22 import android.media.audiofx.AudioEffect;
     23 import android.os.Bundle;
     24 import android.util.Log;
     25 
     26 import java.util.HashMap;
     27 
     28 public class ControlPanelReceiver extends BroadcastReceiver {
     29 
     30     private final static String TAG = "MusicFXControlPanelReceiver";
     31 
     32     @Override
     33     public void onReceive(final Context context, final Intent intent) {
     34 
     35         Log.v(TAG, "onReceive");
     36 
     37         if ((context == null) || (intent == null)) {
     38             Log.w(TAG, "Context or intent is null. Do nothing.");
     39             return;
     40         }
     41 
     42         final String action = intent.getAction();
     43         final String packageName = intent.getStringExtra(AudioEffect.EXTRA_PACKAGE_NAME);
     44         final int audioSession = intent.getIntExtra(AudioEffect.EXTRA_AUDIO_SESSION,
     45                 AudioEffect.ERROR_BAD_VALUE);
     46 
     47         Log.v(TAG, "Action: " + action);
     48         Log.v(TAG, "Package name: " + packageName);
     49         Log.v(TAG, "Audio session: " + audioSession);
     50 
     51         // check package name
     52         if (packageName == null) {
     53             Log.w(TAG, "Null package name");
     54             return;
     55         }
     56 
     57         // check audio session
     58         if ((audioSession == AudioEffect.ERROR_BAD_VALUE) || (audioSession < 0)) {
     59             Log.w(TAG, "Invalid or missing audio session " + audioSession);
     60             return;
     61         }
     62 
     63         // open audio session
     64         if (action.equals(AudioEffect.ACTION_OPEN_AUDIO_EFFECT_CONTROL_SESSION)) {
     65 
     66             // retrieve the effect enabled state
     67             final boolean isGlobalEnabled = context.getSharedPreferences(packageName,
     68                     Context.MODE_PRIVATE).getBoolean(
     69                     ControlPanelEffect.Key.global_enabled.toString(),
     70                     ControlPanelEffect.GLOBAL_ENABLED_DEFAULT);
     71 
     72             ControlPanelEffect.openSession(context, packageName, audioSession);
     73         }
     74 
     75         // close audio session
     76         if (action.equals(AudioEffect.ACTION_CLOSE_AUDIO_EFFECT_CONTROL_SESSION)) {
     77 
     78             ControlPanelEffect.closeSession(context, packageName, audioSession);
     79         }
     80 
     81         // set params
     82         if (action.equals("AudioEffect.ACTION_SET_PARAM")) {
     83             final String param = intent.getStringExtra("AudioEffect.EXTRA_PARAM");
     84 
     85             if (param.equals("GLOBAL_ENABLED")) {
     86                 final Boolean value = intent.getBooleanExtra("AudioEffect.EXTRA_VALUE", false);
     87                 ControlPanelEffect.setParameterBoolean(context, packageName, audioSession,
     88                         ControlPanelEffect.Key.global_enabled, value);
     89             }
     90         }
     91 
     92         // get params
     93         if (action.equals("AudioEffect.ACTION_GET_PARAM")) {
     94             final String param = intent.getStringExtra("AudioEffect.EXTRA_PARAM");
     95 
     96             if (param.equals("GLOBAL_ENABLED")) {
     97                 final Boolean value = ControlPanelEffect.getParameterBoolean(context, packageName,
     98                         audioSession, ControlPanelEffect.Key.global_enabled);
     99                 final Bundle extras = new Bundle();
    100                 extras.putBoolean("GLOBAL_ENABLED", value);
    101                 setResultExtras(extras);
    102             }
    103         }
    104     }
    105 }
    106