错误log如下:
07-09 17:13:42.112 W/NuPlayerRenderer( 648): onDrainAudioQueue(): audio sink is not ready
07-09 17:13:42.113 E/NuPlayerDecoder( 648): Renderer reported 0xffffffed when changing audio output format
07-09 17:13:42.113 W/NuPlayerRenderer( 648): onDrainAudioQueue(): audio sink is not ready
07-09 17:13:42.113 E/NuPlayer( 648): received error(0xffffffed) from audio decoder, flushing(0), now shutting down
07-09 17:13:42.113 D/NuPlayerDriver( 648): notifyListener_l(0xa4513300), (100, 1, -19, -1), loop setting(0, 0)
07-09 17:13:42.113 E/MediaPlayerNative( 1448): error (1, -19)
07-09 17:13:42.113 E/MediaPlayer( 1448): Error (1,-19)
解决
Notifier.java
diff --git a/frameworks/base/services/core/java/com/android/server/power/Notifier.java b/frameworks/base/services/core/java/com/android/server/power/Notifier.java
old mode 100644
new mode 100755
index eecf17a..5f01808
--- a/frameworks/base/services/core/java/com/android/server/power/Notifier.java
+++ b/frameworks/base/services/core/java/com/android/server/power/Notifier.java
@@ -57,6 +57,8 @@ import com.android.server.LocalServices;
import com.android.server.policy.WindowManagerPolicy;
import com.android.server.statusbar.StatusBarManagerInternal;
+import java.util.logging.Logger;
+
/**
* Sends broadcasts about important power state changes.
* <p>
@@ -151,7 +153,9 @@ final class Notifier {
// True if a user activity message should be sent.
private boolean mUserActivityPending;
-
+ /*meig:jicong.wang add for bug 12226 start {@*/
+ private Ringtone mRingtone;
+ /*meig:jicong.wang add for bug 12226 end }@*/
public Notifier(Looper looper, Context context, IBatteryStats batteryStats,
SuspendBlocker suspendBlocker, WindowManagerPolicy policy) {
mContext = context;
@@ -187,6 +191,9 @@ final class Notifier {
try {
mBatteryStats.noteInteractive(true);
} catch (RemoteException ex) { }
+ /*meig:jicong.wang add for bug 12226 start {@*/
+ initChargeRingtone();
+ /*meig:jicong.wang add for bug 12226 end @}*/
}
/**
@@ -738,7 +745,8 @@ final class Notifier {
* Plays the wireless charging sound for both wireless and non-wireless charging
*/
private void playChargingStartedSound() {
- final String soundPath = Settings.Global.getString(mContext.getContentResolver(),
+ /*meig:jicong.wang modify for bug 12226 start {@*/
+ /*final String soundPath = Settings.Global.getString(mContext.getContentResolver(),
Settings.Global.CHARGING_STARTED_SOUND);
if (isChargingFeedbackEnabled() && soundPath != null) {
final Uri soundUri = Uri.parse("file://" + soundPath);
@@ -749,7 +757,21 @@ final class Notifier {
sfx.play();
}
}
+ }*/
+ try {
+ if (mRingtone!=null && mRingtone.isPlaying()){
+ Slog.d(TAG,"charge ringtone is playing stop first");
+ mRingtone.stop();
+ }
+
+ if (isChargingFeedbackEnabled()){
+ Slog.d(TAG,"play charge ringtone now");
+ mRingtone.play();
+ }
+ } catch (Exception e){
+ e.printStackTrace();
}
+ /*meig:jicong.wang modify for bug 12226 end @}*/
}
private void showWirelessChargingStarted(int batteryLevel) {
@@ -786,7 +808,23 @@ final class Notifier {
== Settings.Global.ZEN_MODE_OFF;
return enabled && dndOff;
}
-
+ /*meig:jicong.wang add for bug 12226 start {@*/
+ private void initChargeRingtone(){
+ Slog.d(TAG,"initChargeRingtone start");
+ String soundPath = Settings.Global.getString(mContext.getContentResolver(),
+ Settings.Global.CHARGING_STARTED_SOUND);
+ if (soundPath != null) {
+ final Uri soundUri = Uri.parse("file://" + soundPath);
+ if (soundUri != null) {
+ mRingtone = RingtoneManager.getRingtone(mContext, soundUri);
+ if (mRingtone != null) {
+ mRingtone.setStreamType(AudioManager.STREAM_SYSTEM);
+ Slog.d(TAG,"charge sound mRingtone has init");
+ }
+ }
+ }
+ }
+ /*meig:jicong.wang add for bug 12226 end @}*/
private final class NotifierHandler extends Handler {
public NotifierHandler(Looper looper) {