AudioService.java
private void persistVolume(VolumeStreamState streamState, int device) {
if (mUseFixedVolume) {
return;
}
if (mIsSingleVolume && (streamState.mStreamType != AudioSystem.STREAM_MUSIC)) {
return;
}
if (streamState.hasValidSettingsName()) {
System.putIntForUser(mContentResolver,
streamState.getSettingNameForDevice(device),
(streamState.getIndex(device) + 5)/ 10,
UserHandle.USER_CURRENT);
if(isBox())
streamState.restoreAllDeviceIndex();
if(isTablet())
streamState.restoreSyncDevicesIndex();
cmdhandler.removeCallbacks(runnable);
cmdhandler.postDelayed(runnable,2000);
}
}
private Handler cmdhandler = new Handler();
private Runnable runnable = new Runnable() {
@Override
public void run() {
execCmd("sync");
}
};
public void execCmd(String cmd) {
OutputStream outputStream = null;
DataOutputStream dataOutputStream = null;
try {
java.lang.Process p = Runtime.getRuntime().exec("sh");
outputStream = p.getOutputStream();
dataOutputStream = new DataOutputStream(outputStream);
dataOutputStream.writeBytes(cmd);
dataOutputStream.flush();
Log.d(TAG, "execCmd " + cmd +" success");
} catch (Exception e) {
Log.e(TAG, "execCmd " + cmd +" failed");
e.printStackTrace();
} finally {
if (null != dataOutputStream) {
try {
dataOutputStream.close();
} catch (Exception e) {
e.printStackTrace();
}
}
if (null != outputStream) {
try {
outputStream.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}