Advertisement
techmik

Untitled

Sep 23rd, 2011
345
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 162.86 KB | None | 0 0
  1. techmik@kragar ~/android/system/frameworks/base $ git checkout gingerbread
  2. Switched to branch 'gingerbread'
  3. techmik@kragar ~/android/system/frameworks/base $ git diff danesh
  4. diff --git a/core/java/android/bluetooth/BluetoothDeviceProfileState.java b/core
  5. index bac156b..69710d9 100644
  6. --- a/core/java/android/bluetooth/BluetoothDeviceProfileState.java
  7. +++ b/core/java/android/bluetooth/BluetoothDeviceProfileState.java
  8. @@ -16,12 +16,15 @@
  9.  
  10. package android.bluetooth;
  11.  
  12. +import android.app.AlarmManager;
  13. +import android.app.PendingIntent;
  14. import android.content.BroadcastReceiver;
  15. import android.content.Context;
  16. import android.content.Intent;
  17. import android.content.IntentFilter;
  18. import android.os.Message;
  19. import android.os.PowerManager;
  20. +import android.os.SystemClock;
  21. import android.server.BluetoothA2dpService;
  22. import android.server.BluetoothService;
  23. import android.util.Log;
  24. @@ -85,6 +88,9 @@ public final class BluetoothDeviceProfileState extends Hierarc
  25. private static final long INIT_INCOMING_REJECT_TIMER = 1000; // 1 sec
  26. private static final long MAX_INCOMING_REJECT_TIMER = 3600 * 1000 * 4; // 4
  27.  
  28. + private static final String ACTION_CONNECT = "android.bluetooth.profile_sta
  29. + private static final String ACTION_CONNECT_TYPE = "android.bluetooth.profil
  30. +
  31. private static final String PREFS_NAME = "ConnectionAccess";
  32.  
  33. private BondedDevice mBondedDevice = new BondedDevice();
  34. @@ -165,6 +171,11 @@ public final class BluetoothDeviceProfileState extends Hier
  35. Message msg = obtainMessage(CONNECTION_ACCESS_REQUEST_REPLY);
  36. msg.arg1 = val;
  37. sendMessage(msg);
  38. + } else if (action.equals(ACTION_CONNECT)) {
  39. + Message msg = new Message();
  40. + msg.what = CONNECT_OTHER_PROFILES;
  41. + msg.arg1 = intent.getIntExtra(ACTION_CONNECT_TYPE, -1);
  42. + sendMessage(msg);
  43. }
  44. }
  45. };
  46. @@ -206,6 +217,7 @@ public final class BluetoothDeviceProfileState extends Hiera
  47. filter.addAction(BluetoothDevice.ACTION_ACL_CONNECTED);
  48. filter.addAction(BluetoothDevice.ACTION_ACL_DISCONNECTED);
  49. filter.addAction(BluetoothDevice.ACTION_CONNECTION_ACCESS_REPLY);
  50. + filter.addAction(ACTION_CONNECT);
  51.  
  52. mContext.registerReceiver(mBroadcastReceiver, filter);
  53.  
  54. @@ -806,6 +818,15 @@ public final class BluetoothDeviceProfileState extends Hier
  55. mContext.sendBroadcast(intent, BLUETOOTH_ADMIN_PERM);
  56. }
  57.  
  58. + private void scheduleConnect(int type) {
  59. + AlarmManager mgr = (AlarmManager) mContext.getSystemService(Context.ALA
  60. + Intent i = new Intent(ACTION_CONNECT);
  61. + i.putExtra(BluetoothDevice.EXTRA_DEVICE, mDevice);
  62. + i.putExtra(ACTION_CONNECT_TYPE, type);
  63. + PendingIntent pi = PendingIntent.getBroadcast(mContext, 0, i, 0);
  64. + mgr.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealti
  65. + }
  66. +
  67. private int getTrust() {
  68. String address = mDevice.getAddress();
  69. if (mIncomingConnections != null) return mIncomingConnections.first;
  70. @@ -999,10 +1020,8 @@ public final class BluetoothDeviceProfileState extends Hie
  71. if (mA2dpService.getSinkPriority(mDevice) == BluetoothA2dp.PRIO
  72. mA2dpService.getSinkPriority(mDevice) ==
  73. BluetoothA2dp.PRIORITY_AUTO_CONNECT) {
  74. - Message msg = new Message();
  75. - msg.what = CONNECT_OTHER_PROFILES;
  76. - msg.arg1 = CONNECT_A2DP_OUTGOING;
  77. - sendMessageDelayed(msg, CONNECT_OTHER_PROFILES_DELAY);
  78. + Log.i(TAG, "Queueing CONNECT_A2DP_OUTGOING");
  79. + scheduleConnect(CONNECT_A2DP_OUTGOING);
  80. }
  81. break;
  82. case CONNECT_A2DP_INCOMING:
  83. @@ -1012,10 +1031,8 @@ public final class BluetoothDeviceProfileState extends Hi
  84. if (mHeadsetService.getPriority(mDevice) == BluetoothHeadset.PR
  85. || mHeadsetService.getPriority(mDevice) ==
  86. BluetoothHeadset.PRIORITY_AUTO_CONNECT) {
  87. - Message msg = new Message();
  88. - msg.what = CONNECT_OTHER_PROFILES;
  89. - msg.arg1 = CONNECT_HFP_OUTGOING;
  90. - sendMessageDelayed(msg, CONNECT_OTHER_PROFILES_DELAY);
  91. + Log.i(TAG, "Queueing CONNECT_HFP_OUTGOING");
  92. + scheduleConnect(CONNECT_HFP_OUTGOING);
  93. }
  94. break;
  95. default:
  96. diff --git a/core/java/android/preference/VolumePreference.java b/core/java/andr
  97. index 970d520..978637b 100644
  98. --- a/core/java/android/preference/VolumePreference.java
  99. +++ b/core/java/android/preference/VolumePreference.java
  100. @@ -312,7 +312,21 @@ public class VolumePreference extends SeekBarPreference imp
  101. }
  102.  
  103. public void run() {
  104. - mAudioManager.setStreamVolume(mStreamType, mLastProgress, 0);
  105. + int newStreamVolume = mLastProgress;
  106. + if (mStreamType == AudioManager.STREAM_RING) {
  107. + int ringerMode = mAudioManager.getRingerMode();
  108. + int vibrateSetting = mAudioManager.getVibrateSetting(AudioManag
  109. +
  110. + if (mLastProgress == 0) {
  111. + if (ringerMode == AudioManager.RINGER_MODE_NORMAL) {
  112. + mAudioManager.setRingerMode(vibrateSetting==AudioManage
  113. + }
  114. + } else if (ringerMode != AudioManager.RINGER_MODE_NORMAL) {
  115. + mAudioManager.setRingerMode(AudioManager.RINGER_MODE_NORMAL
  116. + }
  117. +
  118. + }
  119. + mAudioManager.setStreamVolume(mStreamType, newStreamVolume, 0);
  120. }
  121.  
  122. private void sample() {
  123. diff --git a/core/java/android/provider/Settings.java b/core/java/android/provid
  124. index 5ad87b0..cfe8e44 100644
  125. --- a/core/java/android/provider/Settings.java
  126. +++ b/core/java/android/provider/Settings.java
  127. @@ -2447,6 +2447,14 @@ public final class Settings {
  128. public static final String STATUS_BAR_BRIGHTNESS_TOGGLE = "status_bar_b
  129.  
  130. /**
  131. + * Whether to display headset icon on status bar when headset is plugge
  132. + * 0: headset icon is never displayed
  133. + * 1: headset icon is displayed when headset is plugged in
  134. + * @hide
  135. + */
  136. + public static final String STATUS_BAR_HEADSET = "status_bar_headset";
  137. +
  138. + /**
  139. * Whether to wake the screen with the trackball. The value is boolean
  140. * @hide
  141. */
  142. @@ -2498,12 +2506,6 @@ public final class Settings {
  143. public static final String LOCKSCREEN_CUSTOM_ICON_STYLE = "lockscreen_c
  144.  
  145. /**
  146. - * Modify lockscreen widgets layout (time,date,carrier,msg,status)
  147. - * @hide
  148. - */
  149. - public static final String LOCKSCREEN_WIDGETS_LAYOUT = "lockscreen_widg
  150. -
  151. - /**
  152. * When enabled, rotary lockscreen switches app starter and unlock, so
  153. * @hide
  154. */
  155. diff --git a/core/java/android/service/wallpaper/WallpaperService.java b/core/ja
  156. index 9f362d3..fdd8ec7 100644
  157. --- a/core/java/android/service/wallpaper/WallpaperService.java
  158. +++ b/core/java/android/service/wallpaper/WallpaperService.java
  159. @@ -763,6 +763,7 @@ public abstract class WallpaperService extends Service {
  160. }
  161.  
  162. void detach() {
  163. + synchronized (mLock) {
  164. if (mDestroyed) {
  165. return;
  166. }
  167. @@ -804,6 +805,7 @@ public abstract class WallpaperService extends Service {
  168. mInputChannel = null;
  169. }
  170. }
  171. + }
  172. }
  173. }
  174.  
  175. @@ -874,13 +876,17 @@ public abstract class WallpaperService extends Service {
  176. }
  177. Engine engine = onCreateEngine();
  178. mEngine = engine;
  179. - mActiveEngines.add(engine);
  180. + synchronized (mActiveEngines) {
  181. + mActiveEngines.add(engine);
  182. + }
  183. engine.attach(this);
  184. return;
  185. }
  186. case DO_DETACH: {
  187. - mActiveEngines.remove(mEngine);
  188. mEngine.detach();
  189. + synchronized (mActiveEngines) {
  190. + mActiveEngines.remove(mEngine);
  191. + }
  192. return;
  193. }
  194. case DO_SET_DESIRED_SIZE: {
  195. @@ -958,10 +964,12 @@ public abstract class WallpaperService extends Service {
  196. @Override
  197. public void onDestroy() {
  198. super.onDestroy();
  199. - for (int i=0; i<mActiveEngines.size(); i++) {
  200. - mActiveEngines.get(i).detach();
  201. + synchronized (mActiveEngines) {
  202. + for (int i=0; i<mActiveEngines.size(); i++) {
  203. + mActiveEngines.get(i).detach();
  204. + }
  205. + mActiveEngines.clear();
  206. }
  207. - mActiveEngines.clear();
  208. }
  209.  
  210. /**
  211. diff --git a/core/java/com/android/internal/os/BatteryStatsImpl.java b/core/java
  212. index c7a88a1..b6ceea6 100644
  213. --- a/core/java/com/android/internal/os/BatteryStatsImpl.java
  214. +++ b/core/java/com/android/internal/os/BatteryStatsImpl.java
  215. @@ -1184,6 +1184,10 @@ public final class BatteryStatsImpl extends BatteryStats
  216. mBtHeadset = headset;
  217. }
  218.  
  219. + public BluetoothHeadset getBtHeadset() {
  220. + return mBtHeadset;
  221. + }
  222. +
  223. int mChangedStates = 0;
  224.  
  225. void addHistoryRecordLocked(long curTime) {
  226. diff --git a/core/java/com/android/internal/widget/RotarySelector.java b/core/ja
  227. index 7c94871..390cdd9 100644
  228. --- a/core/java/com/android/internal/widget/RotarySelector.java
  229. +++ b/core/java/com/android/internal/widget/RotarySelector.java
  230. @@ -188,6 +188,7 @@ public class RotarySelector extends View {
  231. private VelocityTracker mVelocityTracker;
  232. private int mMinimumVelocity;
  233. private int mMaximumVelocity;
  234. + private long mMaxAnimationDuration;
  235.  
  236. /**
  237. * The number of dimples we are flinging when we do the "spin" animation.
  238. @@ -269,6 +270,7 @@ public class RotarySelector extends View {
  239. final ViewConfiguration configuration = ViewConfiguration.get(mContext)
  240. mMinimumVelocity = configuration.getScaledMinimumFlingVelocity() * 2;
  241. mMaximumVelocity = configuration.getScaledMaximumFlingVelocity();
  242. + mMaxAnimationDuration = 1000;
  243.  
  244. int marginBottomDIP = context.getResources().getInteger(R.integer.confi
  245. mMarginBottom = (int)(marginBottomDIP * mDensity * mDensityScaleFactor)
  246. @@ -881,6 +883,7 @@ public class RotarySelector extends View {
  247. mAnimating = true;
  248. mAnimationStartTime = currentAnimationTimeMillis();
  249. mAnimationDuration = 1000 * (endX - startX) / pixelsPerSecond;
  250. + mAnimationDuration = Math.min(mAnimationDuration, mMaxAnimationDuration
  251. mAnimatingDeltaXStart = startX;
  252. mAnimatingDeltaXEnd = endX;
  253. setGrabbedState(NOTHING_GRABBED);
  254. diff --git a/core/jni/android_hardware_fm_si4709.cpp b/core/jni/android_hardware
  255. index 502f018..ec6aad1 100644
  256. --- a/core/jni/android_hardware_fm_si4709.cpp
  257. +++ b/core/jni/android_hardware_fm_si4709.cpp
  258. @@ -48,6 +48,8 @@
  259. #define JAVA_FM_CHSPACE_100_KHZ 1
  260. #define JAVA_FM_CHSPACE_50_KHZ 2
  261.  
  262. +#define JAVA_FM_RX_SEARCHDIR_DOWN 0
  263. +#define JAVA_FM_RX_SEARCHDIR_UP 1
  264.  
  265. #define FM_RDS_STD_RBDS 0
  266. #define FM_RDS_STD_RDS 1
  267. @@ -56,11 +58,28 @@
  268. #define FM_DE_EMP75 0
  269. #define FM_DE_EMP50 1
  270.  
  271. -#define V4L2_CID_PRIVATE_BASE 0x8000000
  272. -#define V4L2_CID_PRIVATE_TAVARUA_REGION V4L2_CID_PRIVATE_BASE + 7
  273. -#define V4L2_CID_PRIVATE_TAVARUA_EMPHASIS V4L2_CID_PRIVATE_BASE + 12
  274. -#define V4L2_CID_PRIVATE_TAVARUA_RDS_STD V4L2_CID_PRIVATE_BASE + 13
  275. -#define V4L2_CID_PRIVATE_TAVARUA_SPACING V4L2_CID_PRIVATE_BASE + 14
  276. +#define V4L2_CID_PRIVATE_BASE 0x8000000
  277. +#define V4L2_CID_PRIVATE_TAVARUA_SRCHMODE V4L2_CID_PRIVATE_BASE + 1
  278. +#define V4L2_CID_PRIVATE_TAVARUA_SCANDWELL V4L2_CID_PRIVATE_BASE + 2
  279. +#define V4L2_CID_PRIVATE_TAVARUA_SRCHON V4L2_CID_PRIVATE_BASE + 3
  280. +#define V4L2_CID_PRIVATE_TAVARUA_STATE V4L2_CID_PRIVATE_BASE + 4
  281. +#define V4L2_CID_PRIVATE_TAVARUA_TRANSMIT_MODE V4L2_CID_PRIVATE_BASE + 5
  282. +#define V4L2_CID_PRIVATE_TAVARUA_RDSGROUP_MASK V4L2_CID_PRIVATE_BASE + 6
  283. +#define V4L2_CID_PRIVATE_TAVARUA_REGION V4L2_CID_PRIVATE_BASE + 7
  284. +#define V4L2_CID_PRIVATE_TAVARUA_SIGNAL_TH V4L2_CID_PRIVATE_BASE + 8
  285. +#define V4L2_CID_PRIVATE_TAVARUA_SRCH_PTY V4L2_CID_PRIVATE_BASE + 9
  286. +#define V4L2_CID_PRIVATE_TAVARUA_SRCH_PI V4L2_CID_PRIVATE_BASE + 10
  287. +#define V4L2_CID_PRIVATE_TAVARUA_SRCH_CNT V4L2_CID_PRIVATE_BASE + 11
  288. +#define V4L2_CID_PRIVATE_TAVARUA_EMPHASIS V4L2_CID_PRIVATE_BASE + 12
  289. +#define V4L2_CID_PRIVATE_TAVARUA_RDS_STD V4L2_CID_PRIVATE_BASE + 13
  290. +#define V4L2_CID_PRIVATE_TAVARUA_SPACING V4L2_CID_PRIVATE_BASE + 14
  291. +#define V4L2_CID_PRIVATE_TAVARUA_RDSON V4L2_CID_PRIVATE_BASE + 15
  292. +#define V4L2_CID_PRIVATE_TAVARUA_RDSGROUP_PROC V4L2_CID_PRIVATE_BASE + 16
  293. +#define V4L2_CID_PRIVATE_TAVARUA_LP_MODE V4L2_CID_PRIVATE_BASE + 17
  294. +
  295. +#define V4L2_CTRL_CLASS_USER 0x980000
  296. +#define V4L2_CID_BASE (V4L2_CTRL_CLASS_USER | 0x900)
  297. +#define V4L2_CID_AUDIO_MUTE V4L2_CID_BASE + 9
  298.  
  299. struct dev_state_t
  300. {
  301. @@ -279,7 +298,10 @@ int radioOff(int fd)
  302.  
  303. int setFreq(int freq, int fd)
  304. {
  305. - LOGV("%s", __func__);
  306. + LOGV("%s %d", __func__, freq);
  307. +
  308. + //The driver expects the frequency to be in a different unit
  309. + freq = freq / 10;
  310.  
  311. int ret;
  312.  
  313. @@ -332,7 +354,7 @@ int setFreqSpacing(int spacing, int fd)
  314.  
  315. int setMute(int mute, int fd)
  316. {
  317. - LOGV("%s", __func__);
  318. + LOGV("%s %d", __func__, mute);
  319.  
  320. int ret;
  321.  
  322. @@ -412,6 +434,30 @@ static jint android_hardware_fmradio_FmReceiverJNI_setContr
  323. LOGV("%s : fd = %d id = %d value = %d", __func__, fd, id, value);
  324.  
  325. switch(id) {
  326. + case V4L2_CID_AUDIO_MUTE:
  327. + if (value == 3) {
  328. + return setMute(1, fd);
  329. + }
  330. + else if (value == 4) {
  331. + return setMute(0, fd);
  332. + }
  333. + else {
  334. + return FM_JNI_FAILURE;
  335. + }
  336. + break;
  337. +
  338. + case V4L2_CID_PRIVATE_TAVARUA_STATE:
  339. + if (value == 1) {
  340. + return radioOn(fd);
  341. + }
  342. + else if (value == 2) {
  343. + return radioOff(fd);
  344. + }
  345. + else {
  346. + return FM_JNI_FAILURE;
  347. + }
  348. + break;
  349. +
  350. case V4L2_CID_PRIVATE_TAVARUA_SPACING:
  351. return setFreqSpacing(value, fd);
  352. break;
  353. @@ -425,24 +471,6 @@ static jint android_hardware_fmradio_FmReceiverJNI_setContr
  354. break;
  355.  
  356. default:
  357. - switch (value) {
  358. - case 1:
  359. - return radioOn(fd);
  360. - break;
  361. -
  362. - case 2:
  363. - return radioOff(fd);
  364. - break;
  365. -
  366. - case 3:
  367. - return setMute(1, fd);
  368. - break;
  369. -
  370. - case 4:
  371. - return setMute(0, fd);
  372. - break;
  373. -
  374. - }
  375. return FM_JNI_SUCCESS;
  376. }
  377. }
  378. @@ -464,6 +492,9 @@ static jint android_hardware_fmradio_FmReceiverJNI_getFreqNa
  379. return FM_JNI_FAILURE;
  380. }
  381.  
  382. + //convert the frquency to khz units for the application
  383. + freq = freq * 10;
  384. +
  385. return freq;
  386. }
  387.  
  388. @@ -504,7 +535,20 @@ static jint android_hardware_fmradio_FmReceiverJNI_getContr
  389. static jint android_hardware_fmradio_FmReceiverJNI_startSearchNative
  390. (JNIEnv * env, jobject thiz, jint fd, jint dir)
  391. {
  392. - LOGD("startSearchNative() %d", dir);
  393. + int freq;
  394. + int retval;
  395. + if (dir == JAVA_FM_RX_SEARCHDIR_DOWN) {
  396. + retval = ioctl(fd, Si4709_IOC_SEEK_DOWN, &freq);
  397. + }
  398. + else {
  399. + retval = ioctl(fd, Si4709_IOC_SEEK_UP, &freq);
  400. + }
  401. +
  402. + if (retval != 0) {
  403. + LOGE("Search failed");
  404. + }
  405. +
  406. + LOGD("startSearchNative() %d freq=%d", retval, freq);
  407. return FM_JNI_SUCCESS;
  408. }
  409.  
  410. @@ -513,6 +557,7 @@ static jint android_hardware_fmradio_FmReceiverJNI_cancelSea
  411. (JNIEnv * env, jobject thiz, jint fd)
  412. {
  413. LOGD("cancelSearchNative()");
  414. + ioctl(fd, Si4709_IOC_SEEK_CANCEL);
  415. return FM_JNI_SUCCESS;
  416. }
  417.  
  418. diff --git a/core/res/res/values-de/strings.xml b/core/res/res/values-de/strings
  419. index 6a56879..e31a6ab 100644
  420. --- a/core/res/res/values-de/strings.xml
  421. +++ b/core/res/res/values-de/strings.xml
  422. @@ -21,12 +21,12 @@
  423. <resources xmlns:android="http://schemas.android.com/apk/res/android"
  424. xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
  425. <string name="byteShort" msgid="8340973892742019101">"B"</string>
  426. - <string name="kilobyteShort" msgid="5973789783504771878">"KB"</string>
  427. + <string name="kilobyteShort" msgid="5973789783504771878">"kB"</string>
  428. <string name="megabyteShort" msgid="6355851576770428922">"MB"</string>
  429. <string name="gigabyteShort" msgid="3259882455212193214">"GB"</string>
  430. <string name="terabyteShort" msgid="231613018159186962">"TB"</string>
  431. <string name="petabyteShort" msgid="5637816680144990219">"PB"</string>
  432. - <string name="fileSizeSuffix" msgid="7670819340156489359">"<xliff:g id="NUM
  433. + <string name="fileSizeSuffix" msgid="7670819340156489359">"<xliff:g id="NUM
  434. <string name="untitled" msgid="6071602020171759109">"&lt;Unbenannt&gt;"</st
  435. <string name="ellipsis" msgid="7899829516048813237">"…"</string>
  436. <string name="emptyPhoneNumber" msgid="7694063042079676517">"(Keine Telefon
  437. @@ -47,7 +47,7 @@
  438. <string name="profileGroupPhone">Telefon</string>
  439. <string name="profileGroupCalendar">Kalender</string>
  440. <string name="profileGroupGmail">Gmail</string>
  441. - <string name="profileGroupEmail">Email</string>
  442. + <string name="profileGroupEmail">E-Mail</string>
  443. <string name="profileGroupSMS">SMS</string>
  444.  
  445. <string name="wildcardProfile">Anderes</string>
  446. @@ -61,9 +61,9 @@
  447. <string name="mmiComplete" msgid="8232527495411698359">"MMI abgeschlossen."
  448. <string name="badPin" msgid="5085454289896032547">"Die von Ihnen eingegeben
  449. <string name="badPuk" msgid="5702522162746042460">"Der von Ihnen eingegeben
  450. - <string name="mismatchPin" msgid="3695902225843339274">"Die von Ihnen einge
  451. - <string name="invalidPin" msgid="3850018445187475377">"Geben Sie eine PIN e
  452. - <string name="needPuk" msgid="919668385956251611">"Ihre SIM-Karte ist mit e
  453. + <string name="mismatchPin" msgid="3695902225843339274">"Die von Ihnen einge
  454. + <string name="invalidPin" msgid="3850018445187475377">"Geben Sie eine PIN e
  455. + <string name="needPuk" msgid="919668385956251611">"Ihre SIM-Karte ist mit e
  456. <string name="needPuk2" msgid="4526033371987193070">"Geben Sie zum Entsperr
  457. <string name="ClipMmi" msgid="6952821216480289285">"Anrufer-ID für eingehen
  458. <string name="ClirMmi" msgid="7784673673446833091">"Anrufer-ID für ausgehen
  459. @@ -106,12 +106,12 @@
  460. <string name="roamingText2" msgid="8969929049081268115">"Roaming-Anzeige bl
  461. <string name="roamingText3" msgid="5148255027043943317">"Außerhalb der Netz
  462. <string name="roamingText4" msgid="8808456682550796530">"Außerhalb des Gebä
  463. - <string name="roamingText5" msgid="7604063252850354350">"Roaming - Bevorzug
  464. - <string name="roamingText6" msgid="2059440825782871513">"Roaming - Verfügba
  465. - <string name="roamingText7" msgid="7112078724097233605">"Roaming - Allianzp
  466. - <string name="roamingText8" msgid="5989569778604089291">"Roaming - Premiump
  467. - <string name="roamingText9" msgid="7969296811355152491">"Roaming - Volle Di
  468. - <string name="roamingText10" msgid="3992906999815316417">"Roaming - Partiel
  469. + <string name="roamingText5" msgid="7604063252850354350">"Roaming &#x2013; B
  470. + <string name="roamingText6" msgid="2059440825782871513">"Roaming &#x2013; V
  471. + <string name="roamingText7" msgid="7112078724097233605">"Roaming &#x2013; A
  472. + <string name="roamingText8" msgid="5989569778604089291">"Roaming &#x2013; P
  473. + <string name="roamingText9" msgid="7969296811355152491">"Roaming &#x2013; V
  474. + <string name="roamingText10" msgid="3992906999815316417">"Roaming &#x2013;
  475. <string name="roamingText11" msgid="4154476854426920970">"Roaming-Banner ei
  476. <string name="roamingText12" msgid="1189071119992726320">"Roaming-Banner au
  477. <string name="roamingTextSearching" msgid="8360141885972279963">"Suche nach
  478. @@ -150,13 +150,13 @@
  479. <string name="turn_off_radio" msgid="8198784949987062346">"Funk ausschalten
  480. <string name="screen_lock" msgid="799094655496098153">"Display-Sperre"</str
  481. <string name="power_off" msgid="4266614107412865048">"Ausschalten"</string>
  482. - <string name="shutdown_progress" msgid="2281079257329981203">"Wird herunter
  483. + <string name="shutdown_progress" msgid="2281079257329981203">"Wird herunter
  484. <string name="shutdown_confirm" msgid="649792175242821353">"Telefon wird he
  485.  
  486. <!-- Button to reboot the phone, within the Phone Options dialog -->
  487. <string name="reboot_system">Neu starten</string>
  488. <!-- Reboot Progress Dialog. This is shown if the user chooses to reboot th
  489. - <string name="reboot_progress">Neu starten...</string>
  490. + <string name="reboot_progress">Neu starten…</string>
  491. <!-- Reboot Confirmation Dialog. When the user chooses to reboot the phone
  492. <string name="reboot_confirm">Ihr Telefon wird neu gestartet.</string>
  493.  
  494. @@ -239,13 +239,13 @@
  495. <string name="permlab_setDebugApp" msgid="4339730312925176742">"Fehlerbesei
  496. <string name="permdesc_setDebugApp" msgid="5584310661711990702">"Ermöglicht
  497. <string name="permlab_changeConfiguration" msgid="8214475779521218295">"UI-
  498. - <string name="permdesc_changeConfiguration" msgid="3465121501528064399">"Er
  499. + <string name="permdesc_changeConfiguration" msgid="3465121501528064399">"Er
  500. <string name="permlab_enableCarMode" msgid="5684504058192921098">"Automodus
  501. - <string name="permdesc_enableCarMode" msgid="5673461159384850628">"Ermöglic
  502. + <string name="permdesc_enableCarMode" msgid="5673461159384850628">"Ermöglic
  503. <string name="permlab_killBackgroundProcesses" msgid="8373714752793061963">
  504. <string name="permdesc_killBackgroundProcesses" msgid="2908829602869383753"
  505. <string name="permlab_forceStopPackages" msgid="1447830113260156236">"Beend
  506. - <string name="permdesc_forceStopPackages" msgid="7263036616161367402">"Ermö
  507. + <string name="permdesc_forceStopPackages" msgid="7263036616161367402">"Ermö
  508. <string name="permlab_forceBack" msgid="1804196839880393631">"Schließen von
  509. <string name="permdesc_forceBack" msgid="6534109744159919013">"Ermöglicht e
  510. <string name="permlab_dump" msgid="1681799862438954752">"Systeminternen Sta
  511. @@ -253,7 +253,7 @@
  512. <string name="permlab_shutdown" msgid="7185747824038909016">"partielles Her
  513. <string name="permdesc_shutdown" msgid="7046500838746291775">"Versetzt den
  514. <string name="permlab_stopAppSwitches" msgid="4138608610717425573">"Anwendu
  515. - <string name="permdesc_stopAppSwitches" msgid="3857886086919033794">"Hinder
  516. + <string name="permdesc_stopAppSwitches" msgid="3857886086919033794">"Hinder
  517. <string name="permlab_runSetActivityWatcher" msgid="7811586187574696296">"S
  518. <string name="permdesc_runSetActivityWatcher" msgid="3228701938345388092">"
  519. <string name="permlab_broadcastPackageRemoved" msgid="2576333434893532475">
  520. @@ -261,11 +261,11 @@
  521. <string name="permlab_broadcastSmsReceived" msgid="5689095009030336593">"pe
  522. <string name="permdesc_broadcastSmsReceived" msgid="9122419277306740155">"E
  523. <string name="permlab_broadcastWapPush" msgid="3145347413028582371">"von WA
  524. - <string name="permdesc_broadcastWapPush" msgid="3955303669461378091">"Ermög
  525. + <string name="permdesc_broadcastWapPush" msgid="3955303669461378091">"Ermög
  526. <string name="permlab_setProcessLimit" msgid="2451873664363662666">"Anzahl
  527. <string name="permdesc_setProcessLimit" msgid="7824786028557379539">"Ermögl
  528. <string name="permlab_setAlwaysFinish" msgid="5342837862439543783">"alle An
  529. - <string name="permdesc_setAlwaysFinish" msgid="8773936403987091620">"Überlä
  530. + <string name="permdesc_setAlwaysFinish" msgid="8773936403987091620">"Überlä
  531. <string name="permlab_batteryStats" msgid="7863923071360031652">"Akku-Daten
  532. <string name="permdesc_batteryStats" msgid="5847319823772230560">"Ermöglich
  533. <string name="permlab_backup" msgid="470013022865453920">"Systemsicherung u
  534. @@ -275,31 +275,31 @@
  535. <string name="permlab_systemAlertWindow" msgid="3372321942941168324">"Warnu
  536. <string name="permdesc_systemAlertWindow" msgid="5109622689323490558">"Ermö
  537. <string name="permlab_setAnimationScale" msgid="2805103241153907174">"Allge
  538. - <string name="permdesc_setAnimationScale" msgid="7181522138912391988">"Ermö
  539. + <string name="permdesc_setAnimationScale" msgid="7181522138912391988">"Ermö
  540. <string name="permlab_manageAppTokens" msgid="17124341698093865">"Anwendung
  541. <string name="permdesc_manageAppTokens" msgid="977127907524195988">"Ermögli
  542. <string name="permlab_injectEvents" msgid="1378746584023586600">"Tasten und
  543. - <string name="permdesc_injectEvents" msgid="3946098050410874715">"Ermöglich
  544. + <string name="permdesc_injectEvents" msgid="3946098050410874715">"Ermöglich
  545. <string name="permlab_readInputState" msgid="469428900041249234">"Tastature
  546. <string name="permdesc_readInputState" msgid="5132879321450325445">"Ermögli
  547. <string name="permlab_bindInputMethod" msgid="3360064620230515776">"An eine
  548. <string name="permdesc_bindInputMethod" msgid="3734838321027317228">"Ermögl
  549. - <string name="permlab_bindWallpaper" msgid="8716400279937856462">"An einen
  550. - <string name="permdesc_bindWallpaper" msgid="5287754520361915347">"Ermöglic
  551. + <string name="permlab_bindWallpaper" msgid="8716400279937856462">"An ein Hi
  552. + <string name="permdesc_bindWallpaper" msgid="5287754520361915347">"Ermöglic
  553. <string name="permlab_bindDeviceAdmin" msgid="8704986163711455010">"Interak
  554. <string name="permdesc_bindDeviceAdmin" msgid="8714424333082216979">"Ermögl
  555. <string name="permlab_setOrientation" msgid="3365947717163866844">"Bildschi
  556. <string name="permdesc_setOrientation" msgid="6335814461615851863">"Ermögli
  557. <string name="permlab_signalPersistentProcesses" msgid="4255467255488653854
  558. - <string name="permdesc_signalPersistentProcesses" msgid="356553046321501528
  559. + <string name="permdesc_signalPersistentProcesses" msgid="356553046321501528
  560. <string name="permlab_persistentActivity" msgid="8659652042401085862">"Anwe
  561. <string name="permdesc_persistentActivity" msgid="5037199778265006008">"Erm
  562. <string name="permlab_deletePackages" msgid="3343439331576348805">"Anwendun
  563. <string name="permdesc_deletePackages" msgid="3634943677518723314">"Ermögli
  564. <string name="permlab_clearAppUserData" msgid="2192134353540277878">"Daten
  565. - <string name="permdesc_clearAppUserData" msgid="7546345080434325456">"Ermög
  566. + <string name="permdesc_clearAppUserData" msgid="7546345080434325456">"Ermög
  567. <string name="permlab_deleteCacheFiles" msgid="1518556602634276725">"Caches
  568. - <string name="permdesc_deleteCacheFiles" msgid="2283074077168165971">"Ermög
  569. + <string name="permdesc_deleteCacheFiles" msgid="2283074077168165971">"Ermög
  570. <string name="permlab_getPackageSize" msgid="4799785352306641460">"Speicher
  571. <string name="permdesc_getPackageSize" msgid="5557253039670753437">"Ermögli
  572. <string name="permlab_installPackages" msgid="335800214119051089">"Anwendun
  573. @@ -307,11 +307,11 @@
  574. <string name="permlab_clearAppCache" msgid="4747698311163766540">"Alle Cach
  575. <string name="permdesc_clearAppCache" msgid="7740465694193671402">"Ermöglic
  576. <string name="permlab_movePackage" msgid="728454979946503926">"Anwendungsre
  577. - <string name="permdesc_movePackage" msgid="6323049291923925277">"Ermöglicht
  578. + <string name="permdesc_movePackage" msgid="6323049291923925277">"Ermöglicht
  579. <string name="permlab_readLogs" msgid="6615778543198967614">"Lesen vertraul
  580. <string name="permdesc_readLogs" msgid="8896449437464867766">"Ermöglicht ei
  581. <string name="permlab_diagnostic" msgid="8076743953908000342">"Lese-/Schrei
  582. - <string name="permdesc_diagnostic" msgid="3121238373951637049">"Ermöglicht
  583. + <string name="permdesc_diagnostic" msgid="3121238373951637049">"Ermöglicht
  584. <string name="permlab_changeComponentState" msgid="79425198834329406">"Anwe
  585. <string name="permdesc_changeComponentState" msgid="4569107043246700630">"E
  586. <string name="permlab_setPreferredApplications" msgid="3393305202145172005"
  587. @@ -341,45 +341,45 @@
  588. <string name="permlab_installLocationProvider" msgid="6578101199825193873">
  589. <string name="permdesc_installLocationProvider" msgid="5449175116732002106"
  590. <string name="permlab_accessFineLocation" msgid="8116127007541369477">"gena
  591. - <string name="permdesc_accessFineLocation" msgid="7411213317434337331">"Zug
  592. + <string name="permdesc_accessFineLocation" msgid="7411213317434337331">"Zug
  593. <string name="permlab_accessCoarseLocation" msgid="4642255009181975828">"un
  594. - <string name="permdesc_accessCoarseLocation" msgid="8235655958070862293">"G
  595. + <string name="permdesc_accessCoarseLocation" msgid="8235655958070862293">"G
  596. <string name="permlab_accessSurfaceFlinger" msgid="2363969641792388947">"Au
  597. - <string name="permdesc_accessSurfaceFlinger" msgid="6805241830020733025">"E
  598. - <string name="permlab_readFrameBuffer" msgid="6690504248178498136">"Frame-P
  599. - <string name="permdesc_readFrameBuffer" msgid="7530020370469942528">"Ermögl
  600. + <string name="permdesc_accessSurfaceFlinger" msgid="6805241830020733025">"E
  601. + <string name="permlab_readFrameBuffer" msgid="6690504248178498136">"Framebu
  602. + <string name="permdesc_readFrameBuffer" msgid="7530020370469942528">"Ermögl
  603. <string name="permlab_modifyAudioSettings" msgid="6095859937069146086">"Aud
  604. - <string name="permdesc_modifyAudioSettings" msgid="5793461287365991922">"Er
  605. + <string name="permdesc_modifyAudioSettings" msgid="5793461287365991922">"Er
  606. <string name="permlab_recordAudio" msgid="3876049771427466323">"Audio aufne
  607. - <string name="permdesc_recordAudio" msgid="6493228261176552356">"Ermöglicht
  608. + <string name="permdesc_recordAudio" msgid="6493228261176552356">"Ermöglicht
  609. <string name="permlab_camera" msgid="3616391919559751192">"Bilder und Video
  610. <string name="permdesc_camera" msgid="6004878235852154239">"Ermöglicht der
  611. <string name="permlab_brick" msgid="8337817093326370537">"Telefon dauerhaft
  612. <string name="permdesc_brick" msgid="5569526552607599221">"Ermöglicht der A
  613. <string name="permlab_reboot" msgid="2898560872462638242">"Neustart des Tel
  614. - <string name="permdesc_reboot" msgid="7914933292815491782">"Ermöglicht der
  615. + <string name="permdesc_reboot" msgid="7914933292815491782">"Ermöglicht der
  616. <string name="permlab_mount_unmount_filesystems" msgid="1761023272170956541
  617. - <string name="permdesc_mount_unmount_filesystems" msgid="625326379253585976
  618. + <string name="permdesc_mount_unmount_filesystems" msgid="625326379253585976
  619. <string name="permlab_mount_format_filesystems" msgid="5523285143576718981"
  620. - <string name="permdesc_mount_format_filesystems" msgid="574060044906047386"
  621. + <string name="permdesc_mount_format_filesystems" msgid="574060044906047386"
  622. <string name="permlab_asec_access" msgid="3411338632002193846">"Information
  623. <string name="permdesc_asec_access" msgid="8820326551687285439">"Ermöglicht
  624. <string name="permlab_asec_create" msgid="6414757234789336327">"Internen Sp
  625. <string name="permdesc_asec_create" msgid="2621346764995731250">"Ermöglicht
  626. <string name="permlab_asec_destroy" msgid="526928328301618022">"Internen Sp
  627. - <string name="permdesc_asec_destroy" msgid="2746706889208066256">"Ermöglich
  628. + <string name="permdesc_asec_destroy" msgid="2746706889208066256">"Ermöglich
  629. <string name="permlab_asec_mount_unmount" msgid="2456287623689029744">"Inte
  630. <string name="permdesc_asec_mount_unmount" msgid="5934375590189368200">"Erm
  631. <string name="permlab_asec_rename" msgid="7496633954080472417">"Internen Sp
  632. - <string name="permdesc_asec_rename" msgid="2152829985238876790">"Ermöglicht
  633. + <string name="permdesc_asec_rename" msgid="2152829985238876790">"Ermöglicht
  634. <string name="permlab_vibrate" msgid="7768356019980849603">"Vibrationsalarm
  635. - <string name="permdesc_vibrate" msgid="2886677177257789187">"Ermöglicht der
  636. + <string name="permdesc_vibrate" msgid="2886677177257789187">"Ermöglicht der
  637. <string name="permlab_flashlight" msgid="2155920810121984215">"Lichtanzeige
  638. - <string name="permdesc_flashlight" msgid="6433045942283802309">"Ermöglicht
  639. + <string name="permdesc_flashlight" msgid="6433045942283802309">"Ermöglicht
  640. <string name="permlab_manageUsb" msgid="1113453430645402723">"Einstellungen
  641. - <string name="permdesc_manageUsb" msgid="6148489202092166164">"Ermöglicht d
  642. + <string name="permdesc_manageUsb" msgid="6148489202092166164">"Ermöglicht d
  643. <string name="permlab_hardware_test" msgid="4148290860400659146">"Hardware
  644. - <string name="permdesc_hardware_test" msgid="3668894686500081699">"Ermöglic
  645. + <string name="permdesc_hardware_test" msgid="3668894686500081699">"Ermöglic
  646. <string name="permlab_callPhone" msgid="3925836347681847954">"Telefonnummer
  647. <string name="permdesc_callPhone" msgid="3369867353692722456">"Ermöglicht d
  648. <string name="permlab_callPrivileged" msgid="4198349211108497879">"Alle Tel
  649. @@ -395,85 +395,85 @@
  650. <string name="permlab_modifyPhoneState" msgid="8423923777659292228">"Telefo
  651. <string name="permdesc_modifyPhoneState" msgid="3302284561346956587">"Ermög
  652. <string name="permlab_readPhoneState" msgid="2326172951448691631">"Telefons
  653. - <string name="permdesc_readPhoneState" msgid="188877305147626781">"Ermöglic
  654. + <string name="permdesc_readPhoneState" msgid="188877305147626781">"Ermöglic
  655. <string name="permlab_wakeLock" msgid="573480187941496130">"Standby-Modus d
  656. - <string name="permdesc_wakeLock" msgid="7584036471227467099">"Ermöglicht ei
  657. + <string name="permdesc_wakeLock" msgid="7584036471227467099">"Ermöglicht ei
  658. <string name="permlab_devicePower" msgid="4928622470980943206">"Gerät ein-
  659. - <string name="permdesc_devicePower" msgid="4577331933252444818">"Ermöglicht
  660. + <string name="permdesc_devicePower" msgid="4577331933252444818">"Ermöglicht
  661. <string name="permlab_factoryTest" msgid="3715225492696416187">"In Werkstes
  662. <string name="permdesc_factoryTest" msgid="8136644990319244802">"Führt eine
  663. - <string name="permlab_setWallpaper" msgid="6627192333373465143">"Hintergrun
  664. - <string name="permdesc_setWallpaper" msgid="6417041752170585837">"Ermöglich
  665. - <string name="permlab_setWallpaperHints" msgid="3600721069353106851">"Größe
  666. - <string name="permdesc_setWallpaperHints" msgid="6019479164008079626">"Ermö
  667. + <string name="permlab_setWallpaper" msgid="6627192333373465143">"Hintergrun
  668. + <string name="permdesc_setWallpaper" msgid="6417041752170585837">"Ermöglich
  669. + <string name="permlab_setWallpaperHints" msgid="3600721069353106851">"Größe
  670. + <string name="permdesc_setWallpaperHints" msgid="6019479164008079626">"Ermö
  671. <string name="permlab_masterClear" msgid="2315750423139697397">"System auf
  672. <string name="permdesc_masterClear" msgid="5033465107545174514">"Ermöglicht
  673. <string name="permlab_setTime" msgid="2021614829591775646">"Zeit einstellen
  674. - <string name="permdesc_setTime" msgid="667294309287080045">"Ermöglicht eine
  675. + <string name="permdesc_setTime" msgid="667294309287080045">"Ermöglicht eine
  676. <string name="permlab_setTimeZone" msgid="2945079801013077340">"Zeitzone fe
  677. - <string name="permdesc_setTimeZone" msgid="1902540227418179364">"Ermöglicht
  678. + <string name="permdesc_setTimeZone" msgid="1902540227418179364">"Ermöglicht
  679. <string name="permlab_accountManagerService" msgid="4829262349691386986">"A
  680. - <string name="permdesc_accountManagerService" msgid="6056903274106394752">"
  681. + <string name="permdesc_accountManagerService" msgid="6056903274106394752">"
  682. <string name="permlab_getAccounts" msgid="4549918644233460103">"bekannte Ko
  683. - <string name="permdesc_getAccounts" msgid="6839262446413155394">"Ermöglicht
  684. + <string name="permdesc_getAccounts" msgid="6839262446413155394">"Ermöglicht
  685. <string name="permlab_authenticateAccounts" msgid="3940505577982882450">"Al
  686. - <string name="permdesc_authenticateAccounts" msgid="4006839406474208874">"E
  687. + <string name="permdesc_authenticateAccounts" msgid="4006839406474208874">"E
  688. <string name="permlab_manageAccounts" msgid="4440380488312204365">"Kontolis
  689. - <string name="permdesc_manageAccounts" msgid="8804114016661104517">"Ermögli
  690. + <string name="permdesc_manageAccounts" msgid="8804114016661104517">"Ermögli
  691. <string name="permlab_useCredentials" msgid="6401886092818819856">"Authenti
  692. - <string name="permdesc_useCredentials" msgid="7416570544619546974">"Ermögli
  693. + <string name="permdesc_useCredentials" msgid="7416570544619546974">"Ermögli
  694. <string name="permlab_accessNetworkState" msgid="6865575199464405769">"Netz
  695. - <string name="permdesc_accessNetworkState" msgid="558721128707712766">"Ermö
  696. + <string name="permdesc_accessNetworkState" msgid="558721128707712766">"Ermö
  697. <string name="permlab_createNetworkSockets" msgid="9121633680349549585">"un
  698. - <string name="permdesc_createNetworkSockets" msgid="4593339106921772192">"E
  699. - <string name="permlab_writeApnSettings" msgid="7823599210086622545">"Einste
  700. - <string name="permdesc_writeApnSettings" msgid="7443433457842966680">"Ermög
  701. + <string name="permdesc_createNetworkSockets" msgid="4593339106921772192">"E
  702. + <string name="permlab_writeApnSettings" msgid="7823599210086622545">"Einste
  703. + <string name="permdesc_writeApnSettings" msgid="7443433457842966680">"Ermög
  704. <string name="permlab_changeNetworkState" msgid="958884291454327309">"Netzw
  705. - <string name="permdesc_changeNetworkState" msgid="4199958910396387075">"Erm
  706. + <string name="permdesc_changeNetworkState" msgid="4199958910396387075">"Erm
  707. <string name="permlab_changeTetherState" msgid="2702121155761140799">"Tethe
  708. - <string name="permdesc_changeTetherState" msgid="8905815579146349568">"Ermö
  709. + <string name="permdesc_changeTetherState" msgid="8905815579146349568">"Ermö
  710. <string name="permlab_changeBackgroundDataSetting" msgid="14006660126716487
  711. - <string name="permdesc_changeBackgroundDataSetting" msgid="1001482853266638
  712. + <string name="permdesc_changeBackgroundDataSetting" msgid="1001482853266638
  713. <string name="permlab_accessWifiState" msgid="8100926650211034400">"WLAN-St
  714. - <string name="permdesc_accessWifiState" msgid="485796529139236346">"Ermögli
  715. + <string name="permdesc_accessWifiState" msgid="485796529139236346">"Ermögli
  716. <string name="permlab_changeWifiState" msgid="7280632711057112137">"WLAN-St
  717. - <string name="permdesc_changeWifiState" msgid="2950383153656873267">"Ermögl
  718. + <string name="permdesc_changeWifiState" msgid="2950383153656873267">"Ermögl
  719. <string name="permlab_changeWifiMulticastState" msgid="1368253871483254784"
  720. <string name="permdesc_changeWifiMulticastState" msgid="8199464507656067553
  721. <string name="permlab_accessWimaxState" msgid="2800410363171809280">"WiMAX-
  722. - <string name="permdesc_accessWimaxState" msgid="8298035866227524023">"Ermög
  723. + <string name="permdesc_accessWimaxState" msgid="8298035866227524023">"Ermög
  724. <string name="permlab_changeWimaxState" msgid="340465839241528618">"WiMAX-S
  725. - <string name="permdesc_changeWimaxState" msgid="474918005058989421">"Ermögl
  726. + <string name="permdesc_changeWimaxState" msgid="474918005058989421">"Ermögl
  727. <string name="permlab_bluetoothAdmin" msgid="1092209628459341292">"Bluetoot
  728. - <string name="permdesc_bluetoothAdmin" msgid="7256289774667054555">"Ermögli
  729. + <string name="permdesc_bluetoothAdmin" msgid="7256289774667054555">"Ermögli
  730. <string name="permlab_bluetooth" msgid="8361038707857018732">"Bluetooth-Ver
  731. - <string name="permdesc_bluetooth" msgid="762515380679392945">"Ermöglicht ei
  732. + <string name="permdesc_bluetooth" msgid="762515380679392945">"Ermöglicht ei
  733. <string name="permlab_nfc" msgid="4423351274757876953">"Nahfeldkommunikatio
  734. - <string name="permdesc_nfc" msgid="9171401851954407226">"Ermöglicht einer A
  735. + <string name="permdesc_nfc" msgid="9171401851954407226">"Ermöglicht einer A
  736. <string name="permlab_disableKeyguard" msgid="4977406164311535092">"Tastens
  737. - <string name="permdesc_disableKeyguard" msgid="3189763479326302017">"Ermögl
  738. + <string name="permdesc_disableKeyguard" msgid="3189763479326302017">"Ermögl
  739. <string name="permlab_readSyncSettings" msgid="6201810008230503052">"Synchr
  740. - <string name="permdesc_readSyncSettings" msgid="5315925706353341823">"Ermög
  741. + <string name="permdesc_readSyncSettings" msgid="5315925706353341823">"Ermög
  742. <string name="permlab_writeSyncSettings" msgid="6297138566442486462">"Synch
  743. - <string name="permdesc_writeSyncSettings" msgid="2498201614431360044">"Ermö
  744. + <string name="permdesc_writeSyncSettings" msgid="2498201614431360044">"Ermö
  745. <string name="permlab_readSyncStats" msgid="7396577451360202448">"Synchroni
  746. - <string name="permdesc_readSyncStats" msgid="7511448343374465000">"Ermöglic
  747. + <string name="permdesc_readSyncStats" msgid="7511448343374465000">"Ermöglic
  748. <string name="permlab_subscribedFeedsRead" msgid="4756609637053353318">"abo
  749. - <string name="permdesc_subscribedFeedsRead" msgid="3622200625634207660">"Er
  750. + <string name="permdesc_subscribedFeedsRead" msgid="3622200625634207660">"Er
  751. <string name="permlab_subscribedFeedsWrite" msgid="9015246325408209296">"ab
  752. <string name="permdesc_subscribedFeedsWrite" msgid="8121607099326533878">"E
  753. <string name="permlab_readDictionary" msgid="432535716804748781">"nutzerdef
  754. - <string name="permdesc_readDictionary" msgid="1082972603576360690">"Ermögli
  755. + <string name="permdesc_readDictionary" msgid="1082972603576360690">"Ermögli
  756. <string name="permlab_writeDictionary" msgid="6703109511836343341">"in nutz
  757. - <string name="permdesc_writeDictionary" msgid="2241256206524082880">"Ermögl
  758. + <string name="permdesc_writeDictionary" msgid="2241256206524082880">"Ermögl
  759. <string name="permlab_sdcardWrite" product="nosdcard" msgid="85430876310764
  760. <string name="permlab_sdcardWrite" product="default" msgid="807940375900177
  761. - <string name="permdesc_sdcardWrite" product="nosdcard" msgid="6594393334785
  762. - <string name="permdesc_sdcardWrite" product="default" msgid="66439632049764
  763. + <string name="permdesc_sdcardWrite" product="nosdcard" msgid="6594393334785
  764. + <string name="permdesc_sdcardWrite" product="default" msgid="66439632049764
  765. <string name="permlab_cache_filesystem" msgid="5656487264819669824">"Zugrif
  766. <string name="permdesc_cache_filesystem" msgid="1624734528435659906">"Gewäh
  767. <string name="permlab_use_sip" msgid="5986952362795870502">"Internetanrufe
  768. - <string name="permdesc_use_sip" msgid="6320376185606661843">"Ermöglicht ein
  769. + <string name="permdesc_use_sip" msgid="6320376185606661843">"Ermöglicht ein
  770. <string name="policylab_limitPassword" msgid="4497420728857585791">"Passwor
  771. <string name="policydesc_limitPassword" msgid="9083400080861728056">"Zuläss
  772. <string name="policylab_watchLogin" msgid="914130646942199503">"Versuche zu
  773. @@ -586,7 +586,7 @@
  774. <string name="keyguard_password_enter_pin_code" msgid="3731488827218876115"
  775. <string name="keyguard_password_enter_password_code" msgid="913815834481321
  776. <string name="keyguard_password_wrong_pin_code" msgid="1295984114338107718"
  777. - <string name="keyguard_label_text" msgid="861796461028298424">"Drücken Sie
  778. + <string name="keyguard_label_text" msgid="861796461028298424">"Drücken Sie
  779. <string name="emergency_call_dialog_number_for_display" msgid="696192103195
  780. <string name="lockscreen_carrier_default" msgid="8812714795156374435">"(kei
  781. <string name="lockscreen_screen_locked" msgid="7288443074806832904">"Displa
  782. @@ -597,20 +597,20 @@
  783. <string name="lockscreen_return_to_call" msgid="5244259785500040021">"Zurüc
  784. <string name="lockscreen_pattern_correct" msgid="9039008650362261237">"Korr
  785. <string name="lockscreen_pattern_wrong" msgid="4817583279053112312">"Bitte
  786. - <string name="lockscreen_plugged_in" msgid="613343852842944435">"Wird gelad
  787. - <string name="lockscreen_discharging">Entladen (<xliff:g id="number">%d</xl
  788. + <string name="lockscreen_plugged_in" msgid="613343852842944435">"Wird gelad
  789. + <string name="lockscreen_discharging">Entladen (<xliff:g id="number">%d</xl
  790. <string name="lockscreen_charged" msgid="4938930459620989972">"Aufgeladen"<
  791. - <string name="lockscreen_battery_short" msgid="3617549178603354656">"<xliff
  792. - <string name="lockscreen_low_battery" msgid="1482873981919249740">"Bitte La
  793. - <string name="lockscreen_missing_sim_message_short" msgid="7381499217732227
  794. - <string name="lockscreen_missing_sim_message" msgid="2186920585695169078">"
  795. + <string name="lockscreen_battery_short" msgid="3617549178603354656">"<xliff
  796. + <string name="lockscreen_low_battery" msgid="1482873981919249740">"Bitte La
  797. + <string name="lockscreen_missing_sim_message_short" msgid="7381499217732227
  798. + <string name="lockscreen_missing_sim_message" msgid="2186920585695169078">"
  799. <string name="lockscreen_missing_sim_instructions" msgid="88746208189377190
  800. <string name="emergency_calls_only" msgid="6733978304386365407">"Nur Notruf
  801. <string name="lockscreen_network_locked_message" msgid="143389224986028501"
  802. <string name="lockscreen_sim_puk_locked_message" msgid="7441797339976230">"
  803. <string name="lockscreen_sim_puk_locked_instructions" msgid="63596753499239
  804. <string name="lockscreen_sim_locked_message" msgid="8066660129206001039">"B
  805. - <string name="lockscreen_sim_unlock_progress_dialog_message" msgid="5953232
  806. + <string name="lockscreen_sim_unlock_progress_dialog_message" msgid="5953232
  807. <string name="lockscreen_too_many_failed_attempts_dialog_message" msgid="35
  808. <string name="lockscreen_failed_attempts_almost_glogin" msgid="335101384232
  809. <string name="lockscreen_too_many_failed_attempts_countdown" msgid="6251480
  810. @@ -621,8 +621,8 @@
  811. <string name="lockscreen_glogin_username_hint" msgid="8846881424106484447">
  812. <string name="lockscreen_glogin_password_hint" msgid="5958028383954738528">
  813. <string name="lockscreen_glogin_submit_button" msgid="7130893694795786300">
  814. - <string name="lockscreen_glogin_invalid_input" msgid="1364051473347485908">
  815. - <string name="lockscreen_glogin_checking_password" msgid="67588905363323633
  816. + <string name="lockscreen_glogin_invalid_input" msgid="1364051473347485908">
  817. + <string name="lockscreen_glogin_checking_password" msgid="67588905363323633
  818. <string name="lockscreen_unlock_label" msgid="737440483220667054">"Entsperr
  819. <string name="lockscreen_sound_on_label" msgid="9068877576513425970">"Ton e
  820. <string name="lockscreen_sound_off_label" msgid="996822825154319026">"Ton a
  821. @@ -632,16 +632,16 @@
  822. <string name="hour_ampm" msgid="4329881288269772723">"<xliff:g id="HOUR">%-
  823. <string name="hour_cap_ampm" msgid="1829009197680861107">"<xliff:g id="HOUR
  824. <string name="factorytest_failed" msgid="5410270329114212041">"Werkstest fe
  825. - <string name="factorytest_not_system" msgid="4435201656767276723">"Die Akti
  826. - <string name="factorytest_no_action" msgid="872991874799998561">"Es wurden
  827. + <string name="factorytest_not_system" msgid="4435201656767276723">"Die Akti
  828. + <string name="factorytest_no_action" msgid="872991874799998561">"Es wurden
  829. <string name="factorytest_reboot" msgid="6320168203050791643">"Neustart"</s
  830. - <string name="js_dialog_title" msgid="8143918455087008109">"Die Seite auf \
  831. + <string name="js_dialog_title" msgid="8143918455087008109">"Die Seite auf „
  832. <string name="js_dialog_title_default" msgid="6961903213729667573">"JavaScr
  833. - <string name="js_dialog_before_unload" msgid="1901675448179653089">"Von die
  834. + <string name="js_dialog_before_unload" msgid="1901675448179653089">"Diese S
  835. <string name="save_password_label" msgid="6860261758665825069">"Bestätigen"
  836. <string name="double_tap_toast" msgid="1068216937244567247">"Tipp: Zum Hera
  837. <string name="permlab_readHistoryBookmarks" msgid="1284843728203412135">"Br
  838. - <string name="permdesc_readHistoryBookmarks" msgid="4981489815467617191">"E
  839. + <string name="permdesc_readHistoryBookmarks" msgid="4981489815467617191">"E
  840. <string name="permlab_writeHistoryBookmarks" msgid="9009434109836280374">"B
  841. <string name="permdesc_writeHistoryBookmarks" msgid="945571990357114950">"E
  842. <string name="permlab_setAlarm" msgid="5924401328803615165">"Alarm im Wecke
  843. @@ -656,9 +656,9 @@
  844. <string name="text_copied" msgid="4985729524670131385">"Text in Zwischenabl
  845. <string name="more_item_label" msgid="4650918923083320495">"Mehr"</string>
  846. <string name="prepend_shortcut_label" msgid="2572214461676015642">"Menü+"</
  847. - <string name="menu_space_shortcut_label" msgid="2410328639272162537">"Leerz
  848. + <string name="menu_space_shortcut_label" msgid="2410328639272162537">"Leert
  849. <string name="menu_enter_shortcut_label" msgid="2743362785111309668">"Enter
  850. - <string name="menu_delete_shortcut_label" msgid="3658178007202748164">"lösc
  851. + <string name="menu_delete_shortcut_label" msgid="3658178007202748164">"Lösc
  852. <string name="search_go" msgid="8298016669822141719">"Suchen"</string>
  853. <string name="oneMonthDurationPast" msgid="7396384508953779925">"Vor 1 Mona
  854. <string name="beforeOneMonthDurationPast" msgid="909134546836499826">"Vor m
  855. @@ -733,15 +733,15 @@
  856. </plurals>
  857. <string name="preposition_for_date" msgid="9093949757757445117">"am <xliff:
  858. <string name="preposition_for_time" msgid="5506831244263083793">"um <xliff:
  859. - <string name="preposition_for_year" msgid="5040395640711867177">"im Jahr <x
  860. + <string name="preposition_for_year" msgid="5040395640711867177">"<xliff:g i
  861. <string name="day" msgid="8144195776058119424">"Tag"</string>
  862. <string name="days" msgid="4774547661021344602">"Tage"</string>
  863. <string name="hour" msgid="2126771916426189481">"Stunde"</string>
  864. <string name="hours" msgid="894424005266852993">"Stunden"</string>
  865. - <string name="minute" msgid="9148878657703769868">"Min"</string>
  866. + <string name="minute" msgid="9148878657703769868">"Minute"</string>
  867. <string name="minutes" msgid="5646001005827034509">"Minuten"</string>
  868. - <string name="second" msgid="3184235808021478">"Sek"</string>
  869. - <string name="seconds" msgid="3161515347216589235">"s"</string>
  870. + <string name="second" msgid="3184235808021478">"Sekunde"</string>
  871. + <string name="seconds" msgid="3161515347216589235">"Sekunden"</string>
  872. <string name="week" msgid="5617961537173061583">"Woche"</string>
  873. <string name="weeks" msgid="6509623834583944518">"Wochen"</string>
  874. <string name="year" msgid="4001118221013892076">"Jahr"</string>
  875. @@ -765,7 +765,7 @@
  876. <string name="paste" msgid="5629880836805036433">"Einfügen"</string>
  877. <string name="copyUrl" msgid="2538211579596067402">"URL kopieren"</string>
  878. <string name="inputMethod" msgid="1653630062304567879">"Eingabemethode"</st
  879. - <string name="addToDictionary" msgid="8793624991686948709">"\"<xliff:g id="
  880. + <string name="addToDictionary" msgid="8793624991686948709">"„<xliff:g id="W
  881. <string name="editTextMenuTitle" msgid="1672989176958581452">"Text bearbeit
  882. <string name="low_internal_storage_view_title" msgid="1399732408701697546">
  883. <string name="low_internal_storage_view_text" msgid="635106544616378836">"K
  884. @@ -778,7 +778,7 @@
  885. <string name="capital_off" msgid="6815870386972805832">"AUS"</string>
  886. <string name="whichApplication" msgid="4533185947064773386">"Aktion durchfü
  887. <string name="alwaysUse" msgid="4583018368000610438">"Standardmäßig für die
  888. - <string name="clearDefaultHintMsg" msgid="4815455344600932173">"Standardein
  889. + <string name="clearDefaultHintMsg" msgid="4815455344600932173">"Standardein
  890. <string name="chooseActivity" msgid="1009246475582238425">"Aktion auswählen
  891. <string name="chooseUsbActivity" msgid="7892597146032121735">"Anwendung für
  892. <string name="noApplications" msgid="1691104391758345586">"Diese Aktion kan
  893. @@ -826,13 +826,13 @@
  894. <item quantity="other" msgid="4192424489168397386">"WLAN-Netzwerke verfügba
  895. </plurals>
  896. <plurals name="wifi_available_detailed">
  897. - <item quantity="one" msgid="1634101450343277345">"Verfügbares WLAN-Netzwerk
  898. - <item quantity="other" msgid="7915895323644292768">"Verfügbare WLAN-Netzwer
  899. + <item quantity="one" msgid="1634101450343277345">"Verfügbares WLAN-Netzwerk
  900. + <item quantity="other" msgid="7915895323644292768">"Verfügbare WLAN-Netzwer
  901. </plurals>
  902. <string name="select_character" msgid="3365550120617701745">"Zeichen einfüg
  903. <string name="sms_control_default_app_name" msgid="7630529934366549163">"Un
  904. <string name="sms_control_title" msgid="7296612781128917719">"Kurznachricht
  905. - <string name="sms_control_message" msgid="1289331457999236205">"Es werden e
  906. + <string name="sms_control_message" msgid="1289331457999236205">"Es wird ein
  907. <string name="sms_control_yes" msgid="2532062172402615953">"OK"</string>
  908. <string name="sms_control_no" msgid="1715320703137199869">"Abbrechen"</stri
  909. <string name="date_time_set" msgid="5777075614321087758">"Speichern"</strin
  910. @@ -842,18 +842,18 @@
  911. <string name="perms_show_all" msgid="2671791163933091180"><b>"Alle anzeigen
  912. <string name="usb_storage_activity_title" msgid="2399289999608900443">"USB-
  913. <string name="usb_storage_title" msgid="5901459041398751495">"USB-Verbindun
  914. - <string name="usb_storage_message" product="nosdcard" msgid="11577932455150
  915. - <string name="usb_storage_message" product="default" msgid="479675964616724
  916. + <string name="usb_storage_message" product="nosdcard" msgid="11577932455150
  917. + <string name="usb_storage_message" product="default" msgid="479675964616724
  918. <string name="usb_storage_button_mount" msgid="1052259930369508235">"USB-Sp
  919. <string name="usb_storage_error_message" product="nosdcard" msgid="32764137
  920. <string name="usb_storage_error_message" product="default" msgid="120810397
  921. <string name="usb_storage_notification_title" msgid="8175892554757216525">"
  922. - <string name="usb_storage_notification_message" msgid="7380082404288219341"
  923. + <string name="usb_storage_notification_message" msgid="7380082404288219341"
  924. <string name="usb_storage_stop_notification_title" msgid="23360583966635160
  925. - <string name="usb_storage_stop_notification_message" msgid="259181349026984
  926. + <string name="usb_storage_stop_notification_message" msgid="259181349026984
  927. <string name="usb_storage_stop_title" msgid="660129851708775853">"USB-Speic
  928. - <string name="usb_storage_stop_message" product="nosdcard" msgid="136884226
  929. - <string name="usb_storage_stop_message" product="default" msgid="3613713396
  930. + <string name="usb_storage_stop_message" product="nosdcard" msgid="136884226
  931. + <string name="usb_storage_stop_message" product="default" msgid="3613713396
  932. <string name="usb_storage_stop_button_mount" msgid="7060218034900696029">"U
  933. <string name="usb_storage_stop_error_message" msgid="143881914840412108">"B
  934. <string name="dlg_confirm_kill_storage_users_title" msgid="9630390334704786
  935. @@ -864,15 +864,15 @@
  936. <string name="extmedia_format_title" product="default" msgid="8663247929551
  937. <string name="extmedia_format_message" product="nosdcard" msgid="8296908079
  938. <string name="extmedia_format_message" product="default" msgid="36213699624
  939. - <string name="extmedia_format_button_format" msgid="4131064560127478695">"F
  940. + <string name="extmedia_format_button_format" msgid="4131064560127478695">"F
  941. <string name="adb_active_notification_title" msgid="6729044778949189918">"U
  942. - <string name="adb_active_notification_message" msgid="8470296818270110396">
  943. + <string name="adb_active_notification_message" msgid="8470296818270110396">
  944. <string name="select_input_method" msgid="6865512749462072765">"Eingabemeth
  945. <string name="fast_scroll_alphabet" msgid="5433275485499039199">" ABCDEFGHI
  946. <string name="fast_scroll_numeric_alphabet" msgid="4030170524595123610">" 0
  947. <string name="candidates_style" msgid="4333913089637062257"><u>"Kandidaten"
  948. - <string name="ext_media_checking_notification_title" product="nosdcard" msg
  949. - <string name="ext_media_checking_notification_title" product="default" msgi
  950. + <string name="ext_media_checking_notification_title" product="nosdcard" msg
  951. + <string name="ext_media_checking_notification_title" product="default" msgi
  952. <string name="ext_media_checking_notification_message" msgid="8287319882926
  953. <string name="ext_media_nofs_notification_title" product="nosdcard" msgid="
  954. <string name="ext_media_nofs_notification_title" product="default" msgid="7
  955. @@ -885,20 +885,20 @@
  956. <string name="ext_media_badremoval_notification_title" product="nosdcard" m
  957. <string name="ext_media_badremoval_notification_title" product="default" ms
  958. <string name="ext_media_badremoval_notification_message" product="nosdcard"
  959. - <string name="ext_media_badremoval_notification_message" product="default"
  960. + <string name="ext_media_badremoval_notification_message" product="default"
  961. <string name="ext_media_safe_unmount_notification_title" product="nosdcard"
  962. <string name="ext_media_safe_unmount_notification_title" product="default"
  963. - <string name="ext_media_safe_unmount_notification_message" product="nosdcar
  964. - <string name="ext_media_safe_unmount_notification_message" product="default
  965. + <string name="ext_media_safe_unmount_notification_message" product="nosdcar
  966. + <string name="ext_media_safe_unmount_notification_message" product="default
  967. <string name="ext_media_nomedia_notification_title" product="nosdcard" msgi
  968. <string name="ext_media_nomedia_notification_title" product="default" msgid
  969. - <string name="ext_media_nomedia_notification_message" product="nosdcard" ms
  970. - <string name="ext_media_nomedia_notification_message" product="default" msg
  971. + <string name="ext_media_nomedia_notification_message" product="nosdcard" ms
  972. + <string name="ext_media_nomedia_notification_message" product="default" msg
  973. <string name="activity_list_empty" msgid="4168820609403385789">"Keine passe
  974. <string name="permlab_pkgUsageStats" msgid="8787352074326748892">"Nutzungss
  975. <string name="permdesc_pkgUsageStats" msgid="891553695716752835">"Ermöglich
  976. - <string name="permlab_copyProtectedData" msgid="1660908117394854464">"Ermög
  977. - <string name="permdesc_copyProtectedData" msgid="537780957633976401">"Ermög
  978. + <string name="permlab_copyProtectedData" msgid="1660908117394854464">"Ermög
  979. + <string name="permdesc_copyProtectedData" msgid="537780957633976401">"Ermög
  980. <string name="tutorial_double_tap_to_zoom_message_short" msgid="13118100059
  981. <string name="gadget_host_error_inflating" msgid="2613287218853846830">"Feh
  982. <string name="ime_action_go" msgid="8320845651737369027">"Los"</string>
  983. @@ -907,11 +907,11 @@
  984. <string name="ime_action_next" msgid="3138843904009813834">"Weiter"</string
  985. <string name="ime_action_done" msgid="8971516117910934605">"Fertig"</string
  986. <string name="ime_action_default" msgid="2840921885558045721">"Ausführen"</
  987. - <string name="dial_number_using" msgid="5789176425167573586">"Nummer"\n"mit
  988. - <string name="create_contact_using" msgid="4947405226788104538">"Neuer Kont
  989. + <string name="dial_number_using" msgid="5789176425167573586">"Nummer"\n"<xl
  990. + <string name="create_contact_using" msgid="4947405226788104538">"Neuen Kont
  991. <string name="accessibility_compound_button_selected" msgid="56127769460362
  992. <string name="accessibility_compound_button_unselected" msgid="886451289567
  993. - <string name="grant_credentials_permission_message_header" msgid="682453873
  994. + <string name="grant_credentials_permission_message_header" msgid="682453873
  995. <string name="grant_credentials_permission_message_footer" msgid="312521134
  996. <string name="grant_permissions_header_text" msgid="2722567482180797717">"Z
  997. <string name="allow" msgid="7225948811296386551">"Zulassen"</string>
  998. @@ -921,8 +921,8 @@
  999. <string name="input_method_binding_label" msgid="1283557179944992649">"Eing
  1000. <string name="sync_binding_label" msgid="3687969138375092423">"Synchronisie
  1001. <string name="accessibility_binding_label" msgid="4148120742096474641">"Ein
  1002. - <string name="wallpaper_binding_label" msgid="1240087844304687662">"Hinterg
  1003. - <string name="chooser_wallpaper" msgid="7873476199295190279">"Hintergrund ä
  1004. + <string name="wallpaper_binding_label" msgid="1240087844304687662">"Hinterg
  1005. + <string name="chooser_wallpaper" msgid="7873476199295190279">"Hintergrundbi
  1006. <string name="pptp_vpn_description" msgid="2688045385181439401">"Point-to-P
  1007. <string name="l2tp_vpn_description" msgid="3750692169378923304">"Layer-2-Tu
  1008. <string name="l2tp_ipsec_psk_vpn_description" msgid="3945043564008303239">"
  1009. @@ -939,10 +939,10 @@
  1010. <string name="throttle_warning_notification_message" msgid="260973476384570
  1011. <string name="throttled_notification_title" msgid="6269541897729781332">"Mo
  1012. <string name="throttled_notification_message" msgid="4712369856601275146">"
  1013. - <string name="progress_unmounting" product="nosdcard" msgid="53586355431879
  1014. - <string name="progress_unmounting" product="default" msgid="555681397895878
  1015. - <string name="progress_erasing" product="nosdcard" msgid="41836646262030569
  1016. - <string name="progress_erasing" product="default" msgid="211521472436753409
  1017. + <string name="progress_unmounting" product="nosdcard" msgid="53586355431879
  1018. + <string name="progress_unmounting" product="default" msgid="555681397895878
  1019. + <string name="progress_erasing" product="nosdcard" msgid="41836646262030569
  1020. + <string name="progress_erasing" product="default" msgid="211521472436753409
  1021. <string name="format_error" product="nosdcard" msgid="4320339096529911637">
  1022. <string name="format_error" product="default" msgid="1343380371925238343">"
  1023. <string name="media_bad_removal" msgid="7960864061016603281">"SD-Karte wurd
  1024. @@ -957,10 +957,25 @@
  1025. <string name="app_killed_message">Anwendung beendet</string>
  1026.  
  1027. <!-- Phone goggles -->
  1028. - <string name="phone_goggles_problem_count">Problem #%1$d: </string>
  1029. - <string name="phone_goggles_description">Löse die %1$d folgenden Aufgaben i
  1030. + <string name="phone_goggles_problem_count">Aufgabe #%1$d: </string>
  1031. + <string name="phone_goggles_description">Lösen Sie die folgenden %1$d Aufga
  1032. <plurals name="phone_goggles_countdown">
  1033. - <item quantity="one">%d Sekunde übrig</item>
  1034. - <item quantity="other">%d Sekunden übrig</item>
  1035. + <item quantity="one">%d Sekunde verbleibend</item>
  1036. + <item quantity="other">%d Sekunden verbleibend</item>
  1037. </plurals>
  1038. +
  1039. + <string name="permlab_receiveEmergencyBroadcast">Notfall-Broadcasts empfang
  1040. + <string name="permdesc_receiveEmergencyBroadcast">Erlaubt es einer Anwendun
  1041. +
  1042. + <string name="permlab_revokePermissions">Lesen und Ändern entzogener Berech
  1043. + <string name="permdesc_revokePermissions">Erlaubt das Lesen und Schreiben e
  1044. +
  1045. + <string name="permlab_preventpower">Ausschaltknopf abfangen</string>
  1046. + <string name="permdesc_preventpower">Erlaubt einer Anwendung, die Funktion
  1047. +
  1048. + <string name="lockscreen_phone_label">Telefon</string>
  1049. + <string name="aerr_revoked_application">Die Anwendung <xliff:g id="applicat
  1050. + <string name="aerr_revoked_process">Der Prozess <xliff:g id="process">%1$s<
  1051. + <string name="reset_perms">Berechtigungen zurücksetzen</string>
  1052. + <string name="openvpn_vpn_description">OpenVPN</string>
  1053. </resources>
  1054. diff --git a/include/camera/Camera.h b/include/camera/Camera.h
  1055. index 52b992f..2660138 100644
  1056. --- a/include/camera/Camera.h
  1057. +++ b/include/camera/Camera.h
  1058. @@ -210,9 +210,19 @@ public:
  1059. // set preview/capture parameters - key/value pairs
  1060. status_t setParameters(const String8& params);
  1061.  
  1062. + #ifdef MOTO_CUSTOM_PARAMETERS
  1063. + // set preview/capture parameters - key/value pairs
  1064. + status_t setCustomParameters(const String8& params);
  1065. + #endif
  1066. +
  1067. // get preview/capture parameters - key/value pairs
  1068. String8 getParameters() const;
  1069.  
  1070. + #ifdef MOTO_CUSTOM_PARAMETERS
  1071. + // get preview/capture parameters - key/value pairs
  1072. + String8 getCustomParameters() const;
  1073. + #endif
  1074. +
  1075. // send command to camera driver
  1076. status_t sendCommand(int32_t cmd, int32_t arg1, int32_t arg2);
  1077.  
  1078. diff --git a/include/camera/CameraParameters.h b/include/camera/CameraParameters
  1079. index 040d4de..a0c495a 100644
  1080. --- a/include/camera/CameraParameters.h
  1081. +++ b/include/camera/CameraParameters.h
  1082. @@ -59,6 +59,21 @@ public:
  1083. void setPreviewSize(int width, int height);
  1084. void getPreviewSize(int *width, int *height) const;
  1085. void getSupportedPreviewSizes(Vector<Size> &sizes) const;
  1086. +
  1087. + // Set the dimensions in pixels to the given width and height
  1088. + // for video frames. The given width and height must be one
  1089. + // of the supported dimensions returned from
  1090. + // getSupportedVideoSizes(). Must not be called if
  1091. + // getSupportedVideoSizes() returns an empty Vector of Size.
  1092. + void setVideoSize(int width, int height);
  1093. +
  1094. + // Retrieve the current dimensions (width and height)
  1095. + // in pixels for video frames, which must be one of the
  1096. + // supported dimensions returned from getSupportedVideoSizes().
  1097. + // Must not be called if getSupportedVideoSizes() returns an
  1098. + // empty Vector of Size.
  1099. + void getVideoSize(int *width, int *height) const;
  1100. +
  1101. void setPreviewFrameRate(int fps);
  1102. int getPreviewFrameRate() const;
  1103. void getPreviewFpsRange(int *min_fps, int *max_fps) const;
  1104. @@ -333,6 +348,12 @@ public:
  1105. // Example value: "0.95,1.9,Infinity" or "0.049,0.05,0.051". Read only.
  1106. static const char KEY_FOCUS_DISTANCES[];
  1107.  
  1108. + // The current dimensions in pixels (width x height) for video frames.
  1109. + // The width and height must be one of the supported sizes retrieved
  1110. + // via KEY_SUPPORTED_VIDEO_SIZES.
  1111. + // Example value: "1280x720". Read/write.
  1112. + static const char KEY_VIDEO_SIZE[];
  1113. +
  1114. // The image format for video frames. See CAMERA_MSG_VIDEO_FRAME in
  1115. // frameworks/base/include/camera/Camera.h.
  1116. // Example value: "yuv420sp" or PIXEL_FORMAT_XXX constants. Read only.
  1117. @@ -419,6 +440,7 @@ public:
  1118. // Formats for setPreviewFormat and setPictureFormat.
  1119. static const char PIXEL_FORMAT_YUV422SP[];
  1120. static const char PIXEL_FORMAT_YUV420SP[]; // NV21
  1121. + static const char PIXEL_FORMAT_YUV420P[];
  1122. static const char PIXEL_FORMAT_YUV422I[]; // YUY2
  1123. static const char PIXEL_FORMAT_RGB565[];
  1124. static const char PIXEL_FORMAT_JPEG[];
  1125. diff --git a/include/camera/ICamera.h b/include/camera/ICamera.h
  1126. index efa4282..f4c0282 100644
  1127. --- a/include/camera/ICamera.h
  1128. +++ b/include/camera/ICamera.h
  1129. @@ -94,6 +94,14 @@ public:
  1130. // get preview/capture parameters - key/value pairs
  1131. virtual String8 getParameters() const = 0;
  1132.  
  1133. + #ifdef MOTO_CUSTOM_PARAMETERS
  1134. + // set preview/capture custom parameters - key/value pairs
  1135. + virtual status_t setCustomParameters(const String8& params) = 0;
  1136. +
  1137. + // get preview/capture custom parameters - key/value pairs
  1138. + virtual String8 getCustomParameters() const = 0;
  1139. + #endif
  1140. +
  1141. // send command to camera driver
  1142. virtual status_t sendCommand(int32_t cmd, int32_t arg1, int32_t arg2
  1143.  
  1144. diff --git a/libs/camera/Android.mk b/libs/camera/Android.mk
  1145. index ad71714..df27cb1 100644
  1146. --- a/libs/camera/Android.mk
  1147. +++ b/libs/camera/Android.mk
  1148. @@ -22,6 +22,10 @@ ifeq ($(BOARD_CAMERA_USE_GETBUFFERINFO),true)
  1149. LOCAL_CFLAGS += -DUSE_GETBUFFERINFO
  1150. endif
  1151.  
  1152. +ifeq ($(TARGET_USE_MOTO_CUSTOM_CAMERA_PARAMETERS),true)
  1153. + LOCAL_CFLAGS += -DMOTO_CUSTOM_PARAMETERS
  1154. +endif
  1155. +
  1156. ifeq ($(TARGET_SIMULATOR),true)
  1157. LOCAL_LDLIBS += -lpthread
  1158. endif
  1159. diff --git a/libs/camera/Camera.cpp b/libs/camera/Camera.cpp
  1160. index 96c0b57..061edd5 100644
  1161. --- a/libs/camera/Camera.cpp
  1162. +++ b/libs/camera/Camera.cpp
  1163. @@ -305,7 +305,18 @@ status_t Camera::setParameters(const String8& params)
  1164. return c->setParameters(params);
  1165. }
  1166.  
  1167. -// get preview/capture parameters - key/value pairs
  1168. +#ifdef MOTO_CUSTOM_PARAMETERS
  1169. +// set preview/capture custom parameters - key/value pairs
  1170. +status_t Camera::setCustomParameters(const String8& params)
  1171. +{
  1172. + LOGV("setCustomParameters");
  1173. + sp <ICamera> c = mCamera;
  1174. + if (c == 0) return NO_INIT;
  1175. + return c->setCustomParameters(params);
  1176. +}
  1177. +#endif
  1178. +
  1179. +// get preview/capture custom parameters - key/value pairs
  1180. String8 Camera::getParameters() const
  1181. {
  1182. LOGV("getParameters");
  1183. @@ -315,6 +326,18 @@ String8 Camera::getParameters() const
  1184. return params;
  1185. }
  1186.  
  1187. +#ifdef MOTO_CUSTOM_PARAMETERS
  1188. +// get preview/capture parameters - key/value pairs
  1189. +String8 Camera::getCustomParameters() const
  1190. +{
  1191. + LOGV("getCustomParameters");
  1192. + String8 params;
  1193. + sp <ICamera> c = mCamera;
  1194. + if (c != 0) params = mCamera->getCustomParameters();
  1195. + return params;
  1196. +}
  1197. +#endif
  1198. +
  1199. // send command to camera driver
  1200. status_t Camera::sendCommand(int32_t cmd, int32_t arg1, int32_t arg2)
  1201. {
  1202. diff --git a/libs/camera/CameraParameters.cpp b/libs/camera/CameraParameters.cpp
  1203. index 4a86edd..0c03743 100644
  1204. --- a/libs/camera/CameraParameters.cpp
  1205. +++ b/libs/camera/CameraParameters.cpp
  1206. @@ -85,6 +85,7 @@ const char CameraParameters::KEY_CAF[] = "continuous-af";
  1207. const char CameraParameters::KEY_CONTINUOUS_AF[] = "continuous-af";
  1208. const char CameraParameters::KEY_SUPPORTED_CAF[] = "continuous-af-values";
  1209. const char CameraParameters::KEY_SUPPORTED_CONTINUOUS_AF[] = "continuous-af-val
  1210. +const char CameraParameters::KEY_VIDEO_SIZE[] = "video-size";
  1211.  
  1212. const char CameraParameters::TRUE[] = "true";
  1213. const char CameraParameters::FOCUS_DISTANCE_INFINITY[] = "Infinity";
  1214. @@ -148,6 +149,7 @@ const char CameraParameters::SCENE_MODE_BARCODE[] = "barcode
  1215. // Formats for setPreviewFormat and setPictureFormat.
  1216. const char CameraParameters::PIXEL_FORMAT_YUV422SP[] = "yuv422sp";
  1217. const char CameraParameters::PIXEL_FORMAT_YUV420SP[] = "yuv420sp";
  1218. +const char CameraParameters::PIXEL_FORMAT_YUV420P[] = "yuv420p";
  1219. const char CameraParameters::PIXEL_FORMAT_YUV422I[] = "yuv422i-yuyv";
  1220. const char CameraParameters::PIXEL_FORMAT_RGB565[] = "rgb565";
  1221. const char CameraParameters::PIXEL_FORMAT_JPEG[] = "jpeg";
  1222. @@ -403,6 +405,21 @@ void CameraParameters::getSupportedPreviewSizes(Vector<Size
  1223. parseSizesList(previewSizesStr, sizes);
  1224. }
  1225.  
  1226. +void CameraParameters::setVideoSize(int width, int height)
  1227. +{
  1228. + char str[32];
  1229. + sprintf(str, "%dx%d", width, height);
  1230. + set(KEY_VIDEO_SIZE, str);
  1231. +}
  1232. +
  1233. +void CameraParameters::getVideoSize(int *width, int *height) const
  1234. +{
  1235. + *width = *height = -1;
  1236. + const char *p = get(KEY_VIDEO_SIZE);
  1237. + if (p == 0) return;
  1238. + parse_pair(p, width, height, 'x');
  1239. +}
  1240. +
  1241. void CameraParameters::setPreviewFrameRate(int fps)
  1242. {
  1243. set(KEY_PREVIEW_FRAME_RATE, fps);
  1244. diff --git a/libs/camera/ICamera.cpp b/libs/camera/ICamera.cpp
  1245. index 451be45..cc39d39 100644
  1246. --- a/libs/camera/ICamera.cpp
  1247. +++ b/libs/camera/ICamera.cpp
  1248. @@ -49,6 +49,10 @@ enum {
  1249. #ifdef USE_GETBUFFERINFO
  1250. GET_BUFFER_INFO,
  1251. #endif
  1252. +#ifdef MOTO_CUSTOM_PARAMETERS
  1253. + GET_CUSTOM_PARAMETERS,
  1254. + SET_CUSTOM_PARAMETERS,
  1255. +#endif
  1256. };
  1257.  
  1258. class BpCamera: public BpInterface<ICamera>
  1259. @@ -226,6 +230,30 @@ public:
  1260. remote()->transact(GET_PARAMETERS, data, &reply);
  1261. return reply.readString8();
  1262. }
  1263. +
  1264. + #ifdef MOTO_CUSTOM_PARAMETERS
  1265. + // set preview/capture custom parameters - key/value pairs
  1266. + status_t setCustomParameters(const String8& params)
  1267. + {
  1268. + LOGV("setCustomParameters");
  1269. + Parcel data, reply;
  1270. + data.writeInterfaceToken(ICamera::getInterfaceDescriptor());
  1271. + data.writeString8(params);
  1272. + remote()->transact(SET_CUSTOM_PARAMETERS, data, &reply);
  1273. + return reply.readInt32();
  1274. + }
  1275. +
  1276. + // get preview/capture custom parameters - key/value pairs
  1277. + String8 getCustomParameters() const
  1278. + {
  1279. + LOGV("getCustomParameters");
  1280. + Parcel data, reply;
  1281. + data.writeInterfaceToken(ICamera::getInterfaceDescriptor());
  1282. + remote()->transact(GET_CUSTOM_PARAMETERS, data, &reply);
  1283. + return reply.readString8();
  1284. + }
  1285. + #endif
  1286. +
  1287. virtual status_t sendCommand(int32_t cmd, int32_t arg1, int32_t arg2)
  1288. {
  1289. LOGV("sendCommand");
  1290. @@ -374,6 +402,21 @@ status_t BnCamera::onTransact(
  1291. reply->writeString8(getParameters());
  1292. return NO_ERROR;
  1293. } break;
  1294. + #ifdef MOTO_CUSTOM_PARAMETERS
  1295. + case SET_CUSTOM_PARAMETERS: {
  1296. + LOGV("SET_CUSTOM_PARAMETERS");
  1297. + CHECK_INTERFACE(ICamera, data, reply);
  1298. + String8 params(data.readString8());
  1299. + reply->writeInt32(setCustomParameters(params));
  1300. + return NO_ERROR;
  1301. + } break;
  1302. + case GET_CUSTOM_PARAMETERS: {
  1303. + LOGV("GET_CUSTOM_PARAMETERS");
  1304. + CHECK_INTERFACE(ICamera, data, reply);
  1305. + reply->writeString8(getCustomParameters());
  1306. + return NO_ERROR;
  1307. + } break;
  1308. + #endif
  1309. case SEND_COMMAND: {
  1310. LOGV("SEND_COMMAND");
  1311. CHECK_INTERFACE(ICamera, data, reply);
  1312. diff --git a/libs/ui/Android.mk b/libs/ui/Android.mk
  1313. index 135da75..6b249ca 100644
  1314. --- a/libs/ui/Android.mk
  1315. +++ b/libs/ui/Android.mk
  1316. @@ -44,6 +44,8 @@ else ifeq ($(TARGET_BOOTLOADER_BOARD_NAME),vision)
  1317. LOCAL_CFLAGS += -DVISION_KEYPAD
  1318. else ifeq ($(TARGET_BOOTLOADER_BOARD_NAME),speedy)
  1319. LOCAL_CFLAGS += -DVISION_KEYPAD
  1320. +else ifeq ($(TARGET_BOOTLOADER_BOARD_NAME),zeus)
  1321. + LOCAL_CFLAGS += -DZEUS_TOUCHPADS
  1322. endif
  1323.  
  1324. ifeq ($(BOARD_NO_RGBX_8888),true)
  1325. diff --git a/libs/ui/InputReader.cpp b/libs/ui/InputReader.cpp
  1326. index 39de754..b6879dd 100644
  1327. --- a/libs/ui/InputReader.cpp
  1328. +++ b/libs/ui/InputReader.cpp
  1329. @@ -342,7 +342,19 @@ InputDevice* InputReader::createDevice(int32_t deviceId, co
  1330.  
  1331. // Touchscreen-like devices.
  1332. if (classes & INPUT_DEVICE_CLASS_TOUCHSCREEN_MT) {
  1333. +#ifdef ZEUS_TOUCHPADS
  1334. + /* According to the Sony Ericsson SDK, the jogdials should be interpret
  1335. + * as an AINPUT_SOURCE_TOUCHPAD. According to getSources() above, a
  1336. + * touchpad is simply a device with a negative associated display id.
  1337. + */
  1338. + if (deviceId == 0x10004) {
  1339. + device->addMapper(new MultiTouchInputMapper(device, -1));
  1340. + } else {
  1341. + device->addMapper(new MultiTouchInputMapper(device, associatedDispl
  1342. + }
  1343. +#else
  1344. device->addMapper(new MultiTouchInputMapper(device, associatedDisplayId
  1345. +#endif
  1346. } else if (classes & INPUT_DEVICE_CLASS_TOUCHSCREEN) {
  1347. device->addMapper(new SingleTouchInputMapper(device, associatedDisplayI
  1348. }
  1349. diff --git a/media/libeffects/cyanogen-dsp/EffectEqualizer.cpp b/media/libeffect
  1350. index 76a7103..16b978d 100644
  1351. --- a/media/libeffects/cyanogen-dsp/EffectEqualizer.cpp
  1352. +++ b/media/libeffects/cyanogen-dsp/EffectEqualizer.cpp
  1353. @@ -63,7 +63,7 @@ static int64_t toFixedPoint(float in) {
  1354. EffectEqualizer::EffectEqualizer()
  1355. : mLoudnessAdjustment(10000.f), mLoudness(50.f), mNextUpdate(0), mNextUpdat
  1356. {
  1357. - for (int32_t i = 0; i < 5; i ++) {
  1358. + for (int32_t i = 0; i < 6; i ++) {
  1359. mBand[i] = 0;
  1360. }
  1361. }
  1362. @@ -95,7 +95,7 @@ int32_t EffectEqualizer::command(uint32_t cmdCode, uint32_t cm
  1363. reply1x4_1x2_t *replyData = (reply1x4_1x2_t *) p
  1364. replyData->status = 0;
  1365. replyData->vsize = 2;
  1366. - replyData->data = 5;
  1367. + replyData->data = 6;
  1368. *replySize = sizeof(reply1x4_1x2_t);
  1369. LOGI("EQ_PARAM_NUM_BANDS OK");
  1370. return 0;
  1371. @@ -121,7 +121,7 @@ int32_t EffectEqualizer::command(uint32_t cmdCode, uint32_t
  1372. } else if (cep->psize == 8) {
  1373. int32_t cmd = ((int32_t *) cep)[3];
  1374. int32_t arg = ((int32_t *) cep)[4];
  1375. - if (cmd == EQ_PARAM_BAND_LEVEL && arg >= 0 && arg < 5) {
  1376. + if (cmd == EQ_PARAM_BAND_LEVEL && arg >= 0 && arg < 6) {
  1377. reply2x4_1x2_t *replyData = (reply2x4_1x2_t *) p
  1378. replyData->status = 0;
  1379. replyData->vsize = 2;
  1380. @@ -129,8 +129,8 @@ int32_t EffectEqualizer::command(uint32_t cmdCode, uint32_t
  1381. *replySize = sizeof(reply2x4_1x2_t);
  1382. return 0;
  1383. }
  1384. - if (cmd == EQ_PARAM_CENTER_FREQ && arg >= 0 && arg < 5)
  1385. - float centerFrequency = 62.5f * powf(4, arg);
  1386. + if (cmd == EQ_PARAM_CENTER_FREQ && arg >= 0 && arg < 6)
  1387. + float centerFrequency = 15.625f * powf(4, arg);
  1388. reply2x4_1x4_t *replyData = (reply2x4_1x4_t *) p
  1389. replyData->status = 0;
  1390. replyData->vsize = 4;//from 2 to 4 bytes to do 3
  1391. @@ -168,7 +168,7 @@ int32_t EffectEqualizer::command(uint32_t cmdCode, uint32_t
  1392. int32_t cmd = ((int32_t *) cep)[3];
  1393. int32_t arg = ((int32_t *) cep)[4];
  1394.  
  1395. - if (cmd == EQ_PARAM_BAND_LEVEL && arg >= 0 && arg < 5) {
  1396. + if (cmd == EQ_PARAM_BAND_LEVEL && arg >= 0 && arg < 6) {
  1397. LOGI("Setting band %d to %d", cmd, arg);
  1398. *replyData = 0;
  1399. int16_t value = ((int16_t *) cep)[10];
  1400. @@ -194,12 +194,12 @@ int32_t EffectEqualizer::command(uint32_t cmdCode, uint32_
  1401. * sound pressure level.
  1402. *
  1403. * The boost can be calculated as linear scaling of the following adjustment:
  1404. - * 20 Hz +45 dB (unmodeled)
  1405. - * 62.5 Hz +24 dB
  1406. + * 20 Hz +41 dB
  1407. + * 62.5 Hz +28 dB
  1408. * 250 Hz +10 dB
  1409. * 1000 Hz 0 dB
  1410. * 4000 Hz -3 dB
  1411. - * 16000 Hz +6 dB
  1412. + * 16000 Hz +8 dB
  1413. *
  1414. * The boost will be applied maximally for signals of 20 dB and less,
  1415. * and linearly decreased for signals 20 dB ... 100 dB, and no adjustment is
  1416. @@ -207,8 +207,10 @@ int32_t EffectEqualizer::command(uint32_t cmdCode, uint32_t
  1417. * digital sound level against the audio.
  1418. */
  1419. float EffectEqualizer::getAdjustedBand(int32_t band) {
  1420. - const float adj[5] = { 24.0, 10.0, 0.0, -3.0, 6.0 };
  1421. + /* 1st derived by linear extrapolation from (62.5, 28) to (20, 41) */
  1422. + const float adj[6] = { 42.3, 28.0, 10.0, 0.0, -3.0, 8.0 };
  1423.  
  1424. + /* The 15.625 band is not exposed externally, so first point is duplicated.
  1425. float f = mBand[band];
  1426.  
  1427. /* Add loudness adjustment */
  1428. @@ -220,7 +222,7 @@ float EffectEqualizer::getAdjustedBand(int32_t band) {
  1429. loudnessLevel = 20.f;
  1430. }
  1431. /* Maximum loudness = no adj (reference behavior at 100 dB) */
  1432. - loudnessLevel = (loudnessLevel - 20) / (100.0 - 20.0);
  1433. + loudnessLevel = (loudnessLevel - 20) / (100 - 20);
  1434. f += adj[band] * (1. - loudnessLevel);
  1435.  
  1436. return f * (mFade / 100.f);
  1437. @@ -229,9 +231,10 @@ float EffectEqualizer::getAdjustedBand(int32_t band) {
  1438. void EffectEqualizer::refreshBands()
  1439. {
  1440. mGain = toFixedPoint(powf(10.0f, getAdjustedBand(0) / 20.0f));
  1441. - for (int32_t band = 0; band < 4; band ++) {
  1442. - float centerFrequency = 62.5f * powf(4, band);
  1443. - float dB = getAdjustedBand(band+1) - getAdjustedBand(band);
  1444. + for (int32_t band = 0; band < 5; band ++) {
  1445. + /* 15.625, 62.5, 250, 1000, 4000, 16000 */
  1446. + float centerFrequency = 15.625f * powf(4, band);
  1447. + float dB = getAdjustedBand(band + 1) - getAdjustedBand(band);
  1448.  
  1449. mFilterL[band].setHighShelf(centerFrequency * 2.0f, mSamplingRate, dB,
  1450. mFilterR[band].setHighShelf(centerFrequency * 2.0f, mSamplingRate, dB,
  1451. @@ -285,7 +288,7 @@ int32_t EffectEqualizer::process(audio_buffer_t *in, audio_b
  1452. tmpR = tmpR * mGain >> 32;
  1453.  
  1454. /* evaluate the other filters. */
  1455. - for (int32_t j = 0; j < 4; j ++) {
  1456. + for (int32_t j = 0; j < 5; j ++) {
  1457. tmpL = mFilterL[j].process(tmpL);
  1458. tmpR = mFilterR[j].process(tmpR);
  1459. }
  1460. diff --git a/media/libeffects/cyanogen-dsp/EffectEqualizer.h b/media/libeffects/
  1461. index cb5ee1c..4ac6f57 100644
  1462. --- a/media/libeffects/cyanogen-dsp/EffectEqualizer.h
  1463. +++ b/media/libeffects/cyanogen-dsp/EffectEqualizer.h
  1464. @@ -10,10 +10,10 @@
  1465. class EffectEqualizer : public Effect {
  1466. private:
  1467. /* Equalizer */
  1468. - float mBand[5];
  1469. + float mBand[6];
  1470.  
  1471. int64_t mGain;
  1472. - Biquad mFilterL[4], mFilterR[4];
  1473. + Biquad mFilterL[5], mFilterR[5];
  1474.  
  1475. /* Automatic equalizer */
  1476. float mLoudnessAdjustment;
  1477. @@ -23,6 +23,7 @@ class EffectEqualizer : public Effect {
  1478. int32_t mNextUpdateInterval;
  1479. int64_t mPowerSquared;
  1480.  
  1481. + /* Smooth enable/disable */
  1482. int32_t mFade;
  1483.  
  1484. void setBand(int32_t idx, float dB);
  1485. diff --git a/opengl/include/EGL/eglext.h b/opengl/include/EGL/eglext.h
  1486. index 1ffcd56..b121158 100644
  1487. --- a/opengl/include/EGL/eglext.h
  1488. +++ b/opengl/include/EGL/eglext.h
  1489. @@ -229,6 +229,14 @@ struct android_native_buffer_t;
  1490. #define EGL_NATIVE_BUFFER_ANDROID 0x3140 /* eglCreateImageKHR target */
  1491. #endif
  1492.  
  1493. +#ifndef EGL_ANDROID_get_render_buffer
  1494. +#define EGL_ANDROID_get_render_buffer 1
  1495. +#ifdef EGL_EGLEXT_PROTOTYPES
  1496. +EGLAPI EGLClientBuffer EGLAPIENTRY eglGetRenderBufferANDROID(EGLDisplay dpy, EG
  1497. +#endif
  1498. +typedef EGLClientBuffer (EGLAPIENTRYP PFNEGLGETRENDERBUFFERANDROIDPROC) (EGLDis
  1499. +#endif
  1500. +
  1501. #ifndef EGL_ANDROID_swap_rectangle
  1502. #define EGL_ANDROID_swap_rectangle 1
  1503. #ifdef EGL_EGLEXT_PROTOTYPES
  1504. diff --git a/opengl/libagl/egl.cpp b/opengl/libagl/egl.cpp
  1505. index f2362b9..fd0bb58 100644
  1506. --- a/opengl/libagl/egl.cpp
  1507. +++ b/opengl/libagl/egl.cpp
  1508. @@ -158,6 +158,7 @@ struct egl_surface_t
  1509. virtual EGLint getSwapBehavior() const;
  1510. virtual EGLBoolean swapBuffers();
  1511. virtual EGLBoolean setSwapRectangle(EGLint l, EGLint t, EGLint w, EGLi
  1512. + virtual EGLClientBuffer getRenderBuffer() const;
  1513. protected:
  1514. GGLSurface depth;
  1515. };
  1516. @@ -201,6 +202,9 @@ EGLBoolean egl_surface_t::setSwapRectangle(
  1517. {
  1518. return EGL_FALSE;
  1519. }
  1520. +EGLClientBuffer egl_surface_t::getRenderBuffer() const {
  1521. + return 0;
  1522. +}
  1523.  
  1524. // ----------------------------------------------------------------------------
  1525.  
  1526. @@ -226,7 +230,8 @@ struct egl_window_surface_v2_t : public egl_surface_t
  1527. virtual EGLint getRefreshRate() const;
  1528. virtual EGLint getSwapBehavior() const;
  1529. virtual EGLBoolean setSwapRectangle(EGLint l, EGLint t, EGLint w, EGLi
  1530. -
  1531. + virtual EGLClientBuffer getRenderBuffer() const;
  1532. +
  1533. private:
  1534. status_t lock(android_native_buffer_t* buf, int usage, void** vaddr);
  1535. status_t unlock(android_native_buffer_t* buf);
  1536. @@ -621,6 +626,11 @@ EGLBoolean egl_window_surface_v2_t::setSwapRectangle(
  1537. return EGL_TRUE;
  1538. }
  1539.  
  1540. +EGLClientBuffer egl_window_surface_v2_t::getRenderBuffer() const
  1541. +{
  1542. + return buffer;
  1543. +}
  1544. +
  1545. #ifdef LIBAGL_USE_GRALLOC_COPYBITS
  1546.  
  1547. static bool supportedCopybitsDestinationFormat(int format) {
  1548. @@ -879,6 +889,7 @@ static char const * const gExtensionsString =
  1549. // "KHR_image_pixmap "
  1550. "EGL_ANDROID_image_native_buffer "
  1551. "EGL_ANDROID_swap_rectangle "
  1552. + "EGL_ANDROID_get_render_buffer "
  1553. ;
  1554.  
  1555. // ----------------------------------------------------------------------------
  1556. @@ -931,6 +942,8 @@ static const extention_map_t gExtentionMap[] = {
  1557. (__eglMustCastToProperFunctionPointerType)&eglDestroyImageKHR },
  1558. { "eglSetSwapRectangleANDROID",
  1559. (__eglMustCastToProperFunctionPointerType)&eglSetSwapRectangleANDRO
  1560. + { "eglGetRenderBufferANDROID",
  1561. + (__eglMustCastToProperFunctionPointerType)&eglGetRenderBufferANDROI
  1562. };
  1563.  
  1564. /*
  1565. @@ -2160,3 +2173,18 @@ EGLBoolean eglSetSwapRectangleANDROID(EGLDisplay dpy, EGL
  1566.  
  1567. return EGL_TRUE;
  1568. }
  1569. +
  1570. +EGLClientBuffer eglGetRenderBufferANDROID(EGLDisplay dpy, EGLSurface draw)
  1571. +{
  1572. + if (egl_display_t::is_valid(dpy) == EGL_FALSE)
  1573. + return setError(EGL_BAD_DISPLAY, (EGLClientBuffer)0);
  1574. +
  1575. + egl_surface_t* d = static_cast<egl_surface_t*>(draw);
  1576. + if (!d->isValid())
  1577. + return setError(EGL_BAD_SURFACE, (EGLClientBuffer)0);
  1578. + if (d->dpy != dpy)
  1579. + return setError(EGL_BAD_DISPLAY, (EGLClientBuffer)0);
  1580. +
  1581. + // post the surface
  1582. + return d->getRenderBuffer();
  1583. +}
  1584. diff --git a/opengl/libagl/texture.cpp b/opengl/libagl/texture.cpp
  1585. index 70d8806..d67612e 100644
  1586. --- a/opengl/libagl/texture.cpp
  1587. +++ b/opengl/libagl/texture.cpp
  1588. @@ -763,9 +763,17 @@ static void drawTexxOESImp(GLfixed x, GLfixed y, GLfixed z,
  1589. static void drawTexxOES(GLfixed x, GLfixed y, GLfixed z, GLfixed w, GLfixed h,
  1590. ogles_context_t* c)
  1591. {
  1592. +#ifdef LIBAGL_USE_GRALLOC_COPYBITS
  1593. + if (drawTexiOESWithCopybit(gglFixedToIntRound(x),
  1594. + gglFixedToIntRound(y), gglFixedToIntRound(z),
  1595. + gglFixedToIntRound(w), gglFixedToIntRound(h), c)) {
  1596. + return;
  1597. + }
  1598. +#else
  1599. // quickly reject empty rects
  1600. if ((w|h) <= 0)
  1601. return;
  1602. +#endif
  1603. drawTexxOESImp(x, y, z, w, h, c);
  1604. }
  1605.  
  1606. @@ -777,6 +785,11 @@ static void drawTexiOES(GLint x, GLint y, GLint z, GLint w,
  1607. // which is a lot faster.
  1608.  
  1609. if (ggl_likely(c->rasterizer.state.enabled_tmu == 1)) {
  1610. +#ifdef LIBAGL_USE_GRALLOC_COPYBITS
  1611. + if (drawTexiOESWithCopybit(x, y, z, w, h, c)) {
  1612. + return;
  1613. + }
  1614. +#endif
  1615. const int tmu = 0;
  1616. texture_unit_t& u(c->textures.tmu[tmu]);
  1617. EGLTextureObject* textureObject = u.texture;
  1618. diff --git a/opengl/libs/EGL/egl.cpp b/opengl/libs/EGL/egl.cpp
  1619. index 48f7507..40dca24 100644
  1620. --- a/opengl/libs/EGL/egl.cpp
  1621. +++ b/opengl/libs/EGL/egl.cpp
  1622. @@ -76,6 +76,7 @@ static char const * const gExtensionString =
  1623. #endif
  1624. "EGL_ANDROID_image_native_buffer "
  1625. "EGL_ANDROID_swap_rectangle "
  1626. + "EGL_ANDROID_get_render_buffer "
  1627. ;
  1628.  
  1629. // ----------------------------------------------------------------------------
  1630. @@ -427,6 +428,8 @@ static const extention_map_t gExtentionMap[] = {
  1631. (__eglMustCastToProperFunctionPointerType)NULL },
  1632. { "glEGLImageTargetRenderbufferStorageOES",
  1633. (__eglMustCastToProperFunctionPointerType)NULL },
  1634. + { "eglGetRenderBufferANDROID",
  1635. + (__eglMustCastToProperFunctionPointerType)&eglGetRenderBufferANDROI
  1636. };
  1637.  
  1638. extern const __eglMustCastToProperFunctionPointerType gExtensionForwarders[MAX_
  1639. @@ -1905,3 +1908,19 @@ EGLBoolean eglSetSwapRectangleANDROID(EGLDisplay dpy, EGL
  1640. }
  1641. return setError(EGL_BAD_DISPLAY, NULL);
  1642. }
  1643. +
  1644. +EGLClientBuffer eglGetRenderBufferANDROID(EGLDisplay dpy, EGLSurface draw)
  1645. +{
  1646. + SurfaceRef _s(draw);
  1647. + if (!_s.get()) return setError(EGL_BAD_SURFACE, (EGLClientBuffer*)0);
  1648. +
  1649. + if (!validate_display_surface(dpy, draw))
  1650. + return 0;
  1651. + egl_display_t const * const dp = get_display(dpy);
  1652. + egl_surface_t const * const s = get_surface(draw);
  1653. + if (s->cnx->egl.eglGetRenderBufferANDROID) {
  1654. + return s->cnx->egl.eglGetRenderBufferANDROID(
  1655. + dp->disp[s->impl].dpy, s->surface);
  1656. + }
  1657. + return setError(EGL_BAD_DISPLAY, (EGLClientBuffer*)0);
  1658. +}
  1659. diff --git a/packages/SystemUI/res/values-de/strings.xml b/packages/SystemUI/res
  1660. index a88244b..556ddff 100644
  1661. --- a/packages/SystemUI/res/values-de/strings.xml
  1662. +++ b/packages/SystemUI/res/values-de/strings.xml
  1663. @@ -26,14 +26,11 @@
  1664. <string name="status_bar_latest_events_title" msgid="6594767438577593172">"
  1665. <string name="battery_low_title" msgid="7923774589611311406">"Ladegerät ans
  1666. <string name="battery_low_subtitle" msgid="7388781709819722764">"Akku ist f
  1667. - <string name="battery_low_percent_format" msgid="696154104579022959">"<xlif
  1668. + <string name="battery_low_percent_format" msgid="696154104579022959">"<xlif
  1669. <string name="battery_low_why" msgid="7279169609518386372">"Akkuverbrauch"<
  1670. - <!-- no translation found for usb_accessory_permission_prompt (396974591353
  1671. - <skip />
  1672. - <!-- no translation found for usb_device_confirm_prompt (272779358141186850
  1673. - <skip />
  1674. - <!-- no translation found for usb_accessory_confirm_prompt (394743040725273
  1675. - <skip />
  1676. + <string name="usb_accessory_permission_prompt">Der Anwendung %1$s Zugriff a
  1677. + <string name="usb_device_confirm_prompt">%1$s öffnen, wenn dieses USB-Gerät
  1678. + <string name="usb_accessory_confirm_prompt">%1$s öffnen, wenn dieses USB-Zu
  1679. <string name="usb_accessory_uri_prompt" msgid="6332150684964235705">"Keine
  1680. <string name="title_usb_accessory" msgid="4966265263465181372">"USB-Zubehör
  1681. <string name="label_view" msgid="6304565553218192990">"Anzeigen"</string>
  1682. diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarPolic
  1683. index 90faad9..d09ab9c 100644
  1684. --- a/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarPolicy.java
  1685. +++ b/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarPolicy.java
  1686. @@ -92,6 +92,9 @@ public class StatusBarPolicy {
  1687. private final Handler mHandler = new StatusBarHandler();
  1688. private final IBatteryStats mBatteryStats;
  1689.  
  1690. + // headset
  1691. + private boolean mHeadsetPlugged = false;
  1692. +
  1693. // storage
  1694. private StorageManager mStorageManager;
  1695.  
  1696. @@ -604,6 +607,8 @@ public class StatusBarPolicy {
  1697. // need another var that superceding mPhoneSignalHidden
  1698. private boolean mShowCmSignal;
  1699.  
  1700. + private boolean mShowHeadset;
  1701. +
  1702. class SettingsObserver extends ContentObserver {
  1703. SettingsObserver(Handler handler) {
  1704. super(handler);
  1705. @@ -616,6 +621,9 @@ public class StatusBarPolicy {
  1706.  
  1707. resolver.registerContentObserver(Settings.System
  1708. .getUriFor(Settings.System.STATUS_BAR_CM_SIGNAL_TEXT), fals
  1709. +
  1710. + resolver.registerContentObserver(Settings.System
  1711. + .getUriFor(Settings.System.STATUS_BAR_HEADSET), false, this
  1712. }
  1713.  
  1714. @Override public void onChange(boolean selfChange) {
  1715. @@ -1386,16 +1394,16 @@ public class StatusBarPolicy {
  1716. }
  1717.  
  1718. private final void updateHeadset(Intent intent) {
  1719. - final boolean isConnected = intent.getIntExtra("state", 0) == 1;
  1720. + mHeadsetPlugged = intent.getIntExtra("state", 0) == 1;
  1721.  
  1722. - if (isConnected) {
  1723. + if (mHeadsetPlugged) {
  1724. final boolean hasMicrophone = intent.getIntExtra("microphone", 1) =
  1725. final int iconId = hasMicrophone
  1726. ? com.android.internal.R.drawable.stat_sys_headset
  1727. : R.drawable.stat_sys_headset_no_mic;
  1728. mService.setIcon("headset", iconId, 0);
  1729. }
  1730. - mService.setIconVisibility("headset", isConnected);
  1731. + mService.setIconVisibility("headset", mShowHeadset && mHeadsetPlugged);
  1732. }
  1733.  
  1734. private final void updateBluetooth(Intent intent) {
  1735. @@ -1655,10 +1663,13 @@ public class StatusBarPolicy {
  1736. mCmBatteryStatus = !mShowCmBattery;
  1737. mService.setIconVisibility("battery", !mShowCmBattery);
  1738.  
  1739. - //0 will hide the cmsignaltext and show the signal bars
  1740. - mShowCmSignal = Settings.System.getInt(mContext.getContentResolver(),
  1741. - Settings.System.STATUS_BAR_CM_SIGNAL_TEXT, 0) != 0;
  1742. - mService.setIconVisibility("phone_signal", !mShowCmSignal);
  1743. + //0 will hide the cmsignaltext and show the signal bars
  1744. + mShowCmSignal = Settings.System.getInt(mContext.getContentResolver(),
  1745. + Settings.System.STATUS_BAR_CM_SIGNAL_TEXT, 0) != 0;
  1746. + mService.setIconVisibility("phone_signal", !mShowCmSignal);
  1747.  
  1748. + mShowHeadset = (Settings.System.getInt(resolver,
  1749. + Settings.System.STATUS_BAR_HEADSET, 1) == 1);
  1750. + mService.setIconVisibility("headset", mShowHeadset && mHeadsetPlugged);
  1751. }
  1752. }
  1753. diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarServi
  1754. index 687b72e..e4ac0be 100644
  1755. --- a/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarService.java
  1756. +++ b/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarService.java
  1757. @@ -467,7 +467,7 @@ public class StatusBarService extends Service implements Com
  1758. // Disable compact carrier when bottom bar is enabled for now
  1759. // till we find a better solution (looks ugly alone at the top)
  1760. if (mBottomBar)
  1761. - mCompactCarrierLayout.setVisibility(View.VISIBLE);
  1762. + mCompactCarrierLayout.setVisibility(View.GONE);
  1763. if (mLatest.hasClearableItems())
  1764. mCompactClearButton.setVisibility(View.VISIBLE);
  1765. } else {
  1766. diff --git a/policy/src/com/android/internal/policy/impl/LockScreen.java b/polic
  1767. index 2f62a03..2526945 100644
  1768. --- a/policy/src/com/android/internal/policy/impl/LockScreen.java
  1769. +++ b/policy/src/com/android/internal/policy/impl/LockScreen.java
  1770. @@ -34,7 +34,6 @@ import android.content.res.Resources;
  1771. import android.content.res.ColorStateList;
  1772. import android.net.Uri;
  1773. import android.text.format.DateFormat;
  1774. -import android.view.Gravity;
  1775. import android.view.KeyEvent;
  1776. import android.view.LayoutInflater;
  1777. import android.view.View;
  1778. @@ -180,9 +179,6 @@ class LockScreen extends LinearLayout implements KeyguardScr
  1779. private int mCustomIconStyle = Settings.System.getInt(mContext.getContentRe
  1780. Settings.System.LOCKSCREEN_CUSTOM_ICON_STYLE, 1);
  1781.  
  1782. - private int mWidgetLayout = Settings.System.getInt(mContext.getContentResol
  1783. - Settings.System.LOCKSCREEN_WIDGETS_LAYOUT, 0);
  1784. -
  1785. private boolean mRotaryUnlockDown = (Settings.System.getInt(mContext.getCon
  1786. Settings.System.LOCKSCREEN_ROTARY_UNLOCK_DOWN, 0) == 1);
  1787.  
  1788. @@ -478,7 +474,7 @@ class LockScreen extends LinearLayout implements KeyguardScr
  1789.  
  1790. //hide most items when we are in potrait lense mode
  1791. mLensePortrait=(mUseLenseSquareLockscreen && mCreationOrientation != Co
  1792. - if (mLensePortrait || mWidgetLayout == 1 )
  1793. + if (mLensePortrait)
  1794. setLenseWidgetsVisibility(View.INVISIBLE);
  1795.  
  1796. mTabSelector.setLeftTabResources(
  1797. @@ -574,29 +570,6 @@ class LockScreen extends LinearLayout implements KeyguardSc
  1798. }
  1799.  
  1800. resetStatusInfo(updateMonitor);
  1801. - centerWidgets();
  1802. - }
  1803. -
  1804. - private void centerWidgets() {
  1805. - if (mWidgetLayout == 2) {
  1806. - RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutPa
  1807. - mCarrier.getLayoutParams();
  1808. - layoutParams.width = ViewGroup.LayoutParams.MATCH_PARENT;
  1809. - mCarrier.setLayoutParams(layoutParams);
  1810. - mCarrier.setGravity(Gravity.CENTER_HORIZONTAL);
  1811. - layoutParams = (RelativeLayout.LayoutParams)mDate.getLayoutParams()
  1812. - layoutParams.addRule(RelativeLayout.CENTER_HORIZONTAL, 1);
  1813. - mDate.setLayoutParams(layoutParams);
  1814. - layoutParams = (RelativeLayout.LayoutParams)mStatus1.getLayoutParam
  1815. - layoutParams.addRule(RelativeLayout.CENTER_HORIZONTAL, 1);
  1816. - mStatus1.setLayoutParams(layoutParams);
  1817. - layoutParams = (RelativeLayout.LayoutParams)mStatus2.getLayoutParam
  1818. - layoutParams.addRule(RelativeLayout.CENTER_HORIZONTAL, 1);
  1819. - mStatus2.setLayoutParams(layoutParams);
  1820. - layoutParams = (RelativeLayout.LayoutParams)mClock.getLayoutParams(
  1821. - layoutParams.addRule(RelativeLayout.CENTER_HORIZONTAL, 1);
  1822. - mClock.setLayoutParams(layoutParams);
  1823. - }
  1824. }
  1825.  
  1826. static void setBackground(Context bcontext, ViewGroup layout){
  1827. @@ -929,7 +902,7 @@ class LockScreen extends LinearLayout implements KeyguardScr
  1828.  
  1829. private void updateStatusLines() {
  1830. if (!mStatus.showStatusLines()
  1831. - || (mCharging == null && mNextAlarm == null) || mLensePortrait
  1832. + || (mCharging == null && mNextAlarm == null) || mLensePortrait)
  1833. mStatus1.setVisibility(View.INVISIBLE);
  1834. mStatus2.setVisibility(View.INVISIBLE);
  1835. } else if (mCharging != null && mNextAlarm == null) {
  1836. diff --git a/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java
  1837. index cd0c242..b52ccb7 100644
  1838. --- a/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java
  1839. +++ b/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java
  1840. @@ -234,6 +234,7 @@ public class PhoneWindowManager implements WindowManagerPoli
  1841. int mLidKeyboardAccessibility;
  1842. int mLidNavigationAccessibility;
  1843. boolean mScreenOn = false;
  1844. + int mScreenOffReason;
  1845. boolean mOrientationSensorEnabled = false;
  1846. int mCurrentAppOrientation = ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED;
  1847. static final int DEFAULT_ACCELEROMETER_ROTATION = 0;
  1848. @@ -2066,18 +2067,19 @@ public class PhoneWindowManager implements WindowManager
  1849. || ((keyCode == KeyEvent.KEYCODE_VOLUME_DOWN) && mVolumeWak
  1850.  
  1851. // Don't wake the screen if we have not set the option "wake with v
  1852. + // OR if "wake with volume" is set but screen is off due to proximi
  1853. // regardless if WAKE Flag is set in keylayout
  1854. - if (!isScreenOn
  1855. - && isWakeKey
  1856. - && !mVolumeWakeScreen
  1857. + final boolean isOffByProx = (mScreenOffReason == WindowManagerPolic
  1858. + if (isWakeKey
  1859. + && (!mVolumeWakeScreen || isOffByProx)
  1860. && ((keyCode == KeyEvent.KEYCODE_VOLUME_UP) || (keyCode ==
  1861. isWakeKey = false;
  1862. }
  1863.  
  1864. // make sure keyevent get's handled as power key on volume-wake
  1865. - if(!isScreenOn && mVolumeWakeScreen && isWakeKey && ((keyCode == Ke
  1866. + if(mVolumeWakeScreen && isWakeKey && ((keyCode == KeyEvent.KEYCODE_
  1867. || (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN)))
  1868. - keyCode=KeyEvent.KEYCODE_POWER;
  1869. + keyCode = KeyEvent.KEYCODE_POWER;
  1870.  
  1871. if (down && isWakeKey) {
  1872. if (keyguardActive) {
  1873. @@ -2324,6 +2326,7 @@ public class PhoneWindowManager implements WindowManagerPo
  1874. mKeyguardMediator.onScreenTurnedOff(why);
  1875. synchronized (mLock) {
  1876. mScreenOn = false;
  1877. + mScreenOffReason = why;
  1878. updateOrientationListenerLp();
  1879. updateLockScreenTimeout();
  1880. }
  1881. diff --git a/services/camera/libcameraservice/Android.mk b/services/camera/libca
  1882. index 5201055..f3c5dea 100644
  1883. --- a/services/camera/libcameraservice/Android.mk
  1884. +++ b/services/camera/libcameraservice/Android.mk
  1885. @@ -100,4 +100,8 @@ ifeq ($(BOARD_HAS_LGE_FFC), true)
  1886. LOCAL_CFLAGS += -DBOARD_HAS_LGE_FFC
  1887. endif
  1888.  
  1889. +ifeq ($(TARGET_USE_MOTO_CUSTOM_CAMERA_PARAMETERS),true)
  1890. + LOCAL_CFLAGS += -DMOTO_CUSTOM_PARAMETERS
  1891. +endif
  1892. +
  1893. include $(BUILD_SHARED_LIBRARY)
  1894. diff --git a/services/camera/libcameraservice/CameraHardwareStub.cpp b/services/
  1895. index 09b89d1..fff8753 100644
  1896. --- a/services/camera/libcameraservice/CameraHardwareStub.cpp
  1897. +++ b/services/camera/libcameraservice/CameraHardwareStub.cpp
  1898. @@ -371,6 +371,20 @@ CameraParameters CameraHardwareStub::getParameters() const
  1899. return mParameters;
  1900. }
  1901.  
  1902. +#ifdef MOTO_CUSTOM_PARAMETERS
  1903. +status_t CameraHardwareStub::setCustomParameters(const CameraParameters& params
  1904. +{
  1905. + Mutex::Autolock lock(mLock);
  1906. + return NO_ERROR;
  1907. +}
  1908. +
  1909. +CameraParameters CameraHardwareStub::getCustomParameters() const
  1910. +{
  1911. + Mutex::Autolock lock(mLock);
  1912. + return mParameters;
  1913. +}
  1914. +#endif
  1915. +
  1916. status_t CameraHardwareStub::sendCommand(int32_t command, int32_t arg1,
  1917. int32_t arg2)
  1918. {
  1919. diff --git a/services/camera/libcameraservice/CameraHardwareStub.h b/services/ca
  1920. index bd7ed15..1d0ea69 100644
  1921. --- a/services/camera/libcameraservice/CameraHardwareStub.h
  1922. +++ b/services/camera/libcameraservice/CameraHardwareStub.h
  1923. @@ -58,6 +58,10 @@ public:
  1924. virtual status_t dump(int fd, const Vector<String16>& args) const;
  1925. virtual status_t setParameters(const CameraParameters& params);
  1926. virtual CameraParameters getParameters() const;
  1927. +#ifdef MOTO_CUSTOM_PARAMETERS
  1928. + virtual status_t setCustomParameters(const CameraParameters& params);
  1929. + virtual CameraParameters getCustomParameters() const;
  1930. +#endif
  1931. virtual status_t sendCommand(int32_t command, int32_t arg1,
  1932. int32_t arg2);
  1933. virtual void release();
  1934. diff --git a/services/camera/libcameraservice/CameraService.cpp b/services/camer
  1935. index 988d5f0..64384da 100644
  1936. --- a/services/camera/libcameraservice/CameraService.cpp
  1937. +++ b/services/camera/libcameraservice/CameraService.cpp
  1938. @@ -350,10 +350,12 @@ void CameraService::loadSound() {
  1939. if (mSoundRef++) return;
  1940.  
  1941. char value[PROPERTY_VALUE_MAX];
  1942. - property_get("persist.camera.shutter.disable", value, "0");
  1943. - int disableSound = atoi(value);
  1944. + property_get("ro.camera.sound.disabled", value, "0");
  1945. + int systemMute = atoi(value);
  1946. + property_get("persist.sys.camera-mute", value, "0");
  1947. + int userMute = atoi(value);
  1948.  
  1949. - if(!disableSound) {
  1950. + if(!systemMute && !userMute) {
  1951. mSoundPlayer[SOUND_SHUTTER] = newMediaPlayer("/system/media/audio/ui/ca
  1952. mSoundPlayer[SOUND_RECORDING] = newMediaPlayer("/system/media/audio/ui/
  1953. }
  1954. @@ -997,6 +999,32 @@ String8 CameraService::Client::getParameters() const {
  1955. return params;
  1956. }
  1957.  
  1958. +#ifdef MOTO_CUSTOM_PARAMETERS
  1959. +// set preview/capture custom parameters - key/value pairs
  1960. +status_t CameraService::Client::setCustomParameters(const String8& params) {
  1961. + LOG1("setCustomParameters (pid %d) (%s)", getCallingPid(), params.string())
  1962. +
  1963. + Mutex::Autolock lock(mLock);
  1964. + status_t result = checkPidAndHardware();
  1965. + if (result != NO_ERROR) return result;
  1966. +
  1967. +
  1968. + CameraParameters p(params);
  1969. +
  1970. + return mHardware->setCustomParameters(p);
  1971. +}
  1972. +
  1973. +// get preview/capture custom parameters - key/value pairs
  1974. +String8 CameraService::Client::getCustomParameters() const {
  1975. + Mutex::Autolock lock(mLock);
  1976. + if (checkPidAndHardware() != NO_ERROR) return String8();
  1977. +
  1978. + String8 params(mHardware->getCustomParameters().flatten());
  1979. + LOG1("getCustomParameters (pid %d) (%s)", getCallingPid(), params.string())
  1980. + return params;
  1981. +}
  1982. +#endif
  1983. +
  1984. status_t CameraService::Client::sendCommand(int32_t cmd, int32_t arg1, int32_t
  1985. LOG1("sendCommand (pid %d)", getCallingPid());
  1986. int orientation;
  1987. diff --git a/services/camera/libcameraservice/CameraService.h b/services/camera/
  1988. index 7b2f9c4..b723dbf 100644
  1989. --- a/services/camera/libcameraservice/CameraService.h
  1990. +++ b/services/camera/libcameraservice/CameraService.h
  1991. @@ -107,6 +107,10 @@ private:
  1992. virtual status_t takePicture();
  1993. virtual status_t setParameters(const String8& params);
  1994. virtual String8 getParameters() const;
  1995. + #ifdef MOTO_CUSTOM_PARAMETERS
  1996. + virtual status_t setCustomParameters(const String8& params);
  1997. + virtual String8 getCustomParameters() const;
  1998. + #endif
  1999. virtual status_t sendCommand(int32_t cmd, int32_t arg1, int32_t
  2000. private:
  2001. friend class CameraService;
  2002. diff --git a/services/java/com/android/server/VibratorService.java b/services/ja
  2003. index 86c30f8..47e6b66 100755
  2004. --- a/services/java/com/android/server/VibratorService.java
  2005. +++ b/services/java/com/android/server/VibratorService.java
  2006. @@ -304,8 +304,8 @@ public class VibratorService extends IVibratorService.Stub {
  2007.  
  2008. private void delay(long duration) {
  2009. if (duration > 0) {
  2010. - long bedtime = SystemClock.uptimeMillis();
  2011. do {
  2012. + long bedtime = SystemClock.uptimeMillis();
  2013. try {
  2014. this.wait(duration);
  2015. }
  2016. @@ -315,7 +315,7 @@ public class VibratorService extends IVibratorService.Stub {
  2017. break;
  2018. }
  2019. duration = duration
  2020. - - SystemClock.uptimeMillis() - bedtime;
  2021. + - (SystemClock.uptimeMillis() - bedtime);
  2022. } while (duration > 0);
  2023. }
  2024. }
  2025. diff --git a/services/java/com/android/server/am/BatteryStatsService.java b/serv
  2026. index 367c4cf..5ac73f6 100644
  2027. --- a/services/java/com/android/server/am/BatteryStatsService.java
  2028. +++ b/services/java/com/android/server/am/BatteryStatsService.java
  2029. @@ -296,8 +296,13 @@ public final class BatteryStatsService extends IBatteryStat
  2030.  
  2031. public void noteBluetoothOff() {
  2032. enforceCallingPermission();
  2033. + BluetoothHeadset headset = null;
  2034. synchronized (mStats) {
  2035. mStats.noteBluetoothOffLocked();
  2036. + headset = mStats.getBtHeadset();
  2037. + }
  2038. + if (headset != null) {
  2039. + headset.close();
  2040. }
  2041. }
  2042.  
  2043. diff --git a/telephony/java/com/android/internal/telephony/LGEStarRIL.java b/tel
  2044. index 28823d3..f9f9919 100644
  2045. --- a/telephony/java/com/android/internal/telephony/LGEStarRIL.java
  2046. +++ b/telephony/java/com/android/internal/telephony/LGEStarRIL.java
  2047. @@ -113,16 +113,6 @@ public class LGEStarRIL extends RIL implements CommandsInte
  2048. protected boolean mPrepSetupPending = true;
  2049. public void
  2050. setRadioPower(boolean on, Message result) {
  2051. - RILRequest rr
  2052. - = RILRequest.obtain(RIL_REQUEST_RADIO_POWER, result);
  2053. -
  2054. - rr.mp.writeInt(1);
  2055. - rr.mp.writeInt(on ? 1 : 0);
  2056. -
  2057. - if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mR
  2058. -
  2059. - send(rr);
  2060. -
  2061. if(mPrepSetupPending) {
  2062. if (SystemProperties.get("ro.build.product").equals("p999")) {
  2063. /* Set radio access tech */
  2064. @@ -133,6 +123,14 @@ public class LGEStarRIL extends RIL implements CommandsInte
  2065. if (RILJ_LOGD) riljLog(rrSPR.serialString() + "> "
  2066. + requestToString(rrSPR.mRequest));
  2067. send(rrSPR);
  2068. + /* Set time zone reporting */
  2069. + rrSPR = RILRequest.obtain(
  2070. + 189, null);
  2071. + rrSPR.mp.writeInt(1);
  2072. + rrSPR.mp.writeInt(1);
  2073. + if (RILJ_LOGD) riljLog(rrSPR.serialString() + "> "
  2074. + + requestToString(rrSPR.mRequest));
  2075. + send(rrSPR);
  2076. } else {
  2077. /* Set GPRS class */
  2078. RILRequest rrCs = RILRequest.obtain(
  2079. @@ -144,12 +142,33 @@ public class LGEStarRIL extends RIL implements CommandsInt
  2080. + requestToString(rrCs.mRequest));
  2081. send(rrCs);
  2082. }
  2083. -
  2084. + /* Get charset */
  2085. + RILRequest rrGCS = RILRequest.obtain(
  2086. + 152, null);
  2087. + if (RILJ_LOGD) riljLog(rrGCS.serialString() + "> "
  2088. + + requestToString(rrGCS.mRequest));
  2089. + send(rrGCS);
  2090. }
  2091. + RILRequest rr
  2092. + = RILRequest.obtain(RIL_REQUEST_RADIO_POWER, result);
  2093. +
  2094. + rr.mp.writeInt(3);
  2095. + rr.mp.writeInt(on ? 1 : 0);
  2096. + rr.mp.writeInt(0);
  2097. + rr.mp.writeInt(0);
  2098. +
  2099. + if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mR
  2100. +
  2101. + send(rr);
  2102. +
  2103. }
  2104.  
  2105. protected void LGEswitchToRadioState(RadioState newState) {
  2106.  
  2107. + if (!mPrepSetupPending && newState == RadioState.RADIO_UNAVAILABLE) {
  2108. + /* We seem to have lost the radio, reset the setup flag */
  2109. + mPrepSetupPending = true;
  2110. + }
  2111. if (newState.isOn() && mPrepSetupPending) {
  2112. RILRequest rrPnt = RILRequest.obtain(
  2113. RIL_REQUEST_SET_PREFERRED_NETWORK_TYPE, null);
  2114. @@ -161,14 +180,6 @@ public class LGEStarRIL extends RIL implements CommandsInte
  2115.  
  2116. send(rrPnt);
  2117.  
  2118. - /* Request service line */
  2119. - RILRequest rrSL = RILRequest.obtain(
  2120. - (SystemProperties.get("ro.build.product").equals("p999") ?
  2121. - rrSL.mp.writeInt(0);
  2122. - if (RILJ_LOGD) riljLog(rrSL.serialString() + "> "
  2123. - + requestToString(rrSL.mRequest));
  2124. - send(rrSL);
  2125. -
  2126. /* Set "ready" */
  2127. RILRequest rrSc = RILRequest.obtain(
  2128. (SystemProperties.get("ro.build.product").equals("p999") ?
  2129. @@ -329,6 +340,45 @@ public class LGEStarRIL extends RIL implements CommandsInte
  2130. send(rr);
  2131. }
  2132.  
  2133. + public void
  2134. + getNetworkSelectionMode(Message response) {
  2135. + RILRequest rr
  2136. + = RILRequest.obtain(RIL_REQUEST_QUERY_NETWORK_SELECTION_MODE,
  2137. + response);
  2138. +
  2139. + if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mR
  2140. +
  2141. + send(rr);
  2142. + /* ADAPTED_NETWORK_NAME */
  2143. + rr
  2144. + = RILRequest.obtain(143, null);
  2145. +
  2146. + rr.mp.writeInt(1);
  2147. + rr.mp.writeInt(6);
  2148. +
  2149. + send(rr);
  2150. + }
  2151. +
  2152. + public void
  2153. + getIMSI(Message result) {
  2154. + RILRequest rr = RILRequest.obtain(RIL_REQUEST_GET_IMSI, result);
  2155. +
  2156. + if (RILJ_LOGD) riljLog(rr.serialString() +
  2157. + "> getIMSI:RIL_REQUEST_GET_IMSI " +
  2158. + RIL_REQUEST_GET_IMSI +
  2159. + " " + requestToString(rr.mRequest));
  2160. +
  2161. + send(rr);
  2162. +
  2163. + /* Request service line */
  2164. + RILRequest rrSL = RILRequest.obtain(
  2165. + (SystemProperties.get("ro.build.product").equals("p999") ? 294
  2166. + rrSL.mp.writeInt(0);
  2167. + if (RILJ_LOGD) riljLog(rrSL.serialString() + "> "
  2168. + + requestToString(rrSL.mRequest));
  2169. + send(rrSL);
  2170. + }
  2171. +
  2172. protected void
  2173. processSolicited (Parcel p) {
  2174. int serial, error;
  2175. @@ -455,7 +505,10 @@ public class LGEStarRIL extends RIL implements CommandsInte
  2176. case RIL_REQUEST_EXIT_EMERGENCY_CALLBACK_MODE: ret = responseVoid(p
  2177. case RIL_REQUEST_REPORT_SMS_MEMORY_STATUS: ret = responseVoid(p); b
  2178. case RIL_REQUEST_REPORT_STK_SERVICE_IS_RUNNING: ret = responseVoid(
  2179. + case 143: ret = responseVoid(p); break; // ADAPTED_NETWORK_NAME
  2180. + case 152: ret = responseString(p); break; // RIL_REQUEST_GET_TE_CH
  2181. case 161: ret = responsePdpAddress(p); break; // SHOW_PDP_ADDRESS
  2182. + case 189: ret = responseVoid(p); break; // RIL_REQUEST_SET_TIME_ZO
  2183. case 273: ret = responseVoid(p); break; // SET_GMM_ATTACH_MODE
  2184. case 286: ret = responseVoid(p); break; // GET_SERVICE_LINE
  2185. case 294: ret = responseVoid(p); break; // GET_SERVICE_LINE
  2186. @@ -1055,7 +1108,10 @@ public class LGEStarRIL extends RIL implements CommandsIn
  2187. case RIL_REQUEST_EXIT_EMERGENCY_CALLBACK_MODE: return "REQUEST_EXIT
  2188. case RIL_REQUEST_REPORT_SMS_MEMORY_STATUS: return "RIL_REQUEST_REPO
  2189. case RIL_REQUEST_REPORT_STK_SERVICE_IS_RUNNING: return "RIL_REQUEST
  2190. + case 152: return "RIL_REQUEST_GET_TE_CHARACTER_SET";
  2191. + case 143: return "ADAPTED_NETWORK_NAME";
  2192. case 161: return "SHOW_PDP_ADDRESS";
  2193. + case 189: return "RIL_REQUEST_SET_TIME_ZONE_REPORTING";
  2194. case 273: return "SET_GMM_ATTACH_MODE";
  2195. case 286: return "GET_SERVICE_LINE"; // p990
  2196. case 294: return "GET_SERVICE_LINE"; // p999
  2197. diff --git a/telephony/java/com/android/internal/telephony/PhoneFactory.java b/t
  2198. index 56ca6c9..3aa1046 100644
  2199. --- a/telephony/java/com/android/internal/telephony/PhoneFactory.java
  2200. +++ b/telephony/java/com/android/internal/telephony/PhoneFactory.java
  2201. @@ -119,6 +119,9 @@ public class PhoneFactory {
  2202. } else if("lgestar".equals(sRILClassname)) {
  2203. Log.i(LOG_TAG, "Using LGE Star RIL");
  2204. sCommandsInterface = new LGEStarRIL(context, networkMode, c
  2205. + } else if ("semc".equals(sRILClassname)) {
  2206. + Log.i(LOG_TAG, "Using Semc RIL");
  2207. + sCommandsInterface = new SemcRIL(context, networkMode, cdma
  2208. } else {
  2209. sCommandsInterface = new RIL(context, networkMode, cdmaSubs
  2210. }
  2211. diff --git a/telephony/java/com/android/internal/telephony/QualcommNoSimReadyRIL
  2212. new file mode 100644
  2213. index 0000000..bdc5ba4
  2214. --- /dev/null
  2215. +++ b/telephony/java/com/android/internal/telephony/QualcommNoSimReadyRIL.java
  2216. @@ -0,0 +1,767 @@
  2217. +/*
  2218. + * Copyright (C) 2011 The CyanogenMod Project
  2219. + *
  2220. + * Licensed under the Apache License, Version 2.0 (the "License");
  2221. + * you may not use this file except in compliance with the License.
  2222. + * You may obtain a copy of the License at
  2223. + *
  2224. + * http://www.apache.org/licenses/LICENSE-2.0
  2225. + *
  2226. + * Unless required by applicable law or agreed to in writing, software
  2227. + * distributed under the License is distributed on an "AS IS" BASIS,
  2228. + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  2229. + * See the License for the specific language governing permissions and
  2230. + * limitations under the License.
  2231. + */
  2232. +
  2233. +package com.android.internal.telephony;
  2234. +
  2235. +import static com.android.internal.telephony.RILConstants.*;
  2236. +
  2237. +import android.content.Context;
  2238. +import android.os.AsyncResult;
  2239. +import android.os.Handler;
  2240. +import android.os.HandlerThread;
  2241. +import android.os.Looper;
  2242. +import android.os.Message;
  2243. +import android.os.Parcel;
  2244. +import android.telephony.SmsMessage;
  2245. +import android.util.Log;
  2246. +
  2247. +import com.android.internal.telephony.IccCardApplication;
  2248. +import com.android.internal.telephony.IccCardStatus;
  2249. +import com.android.internal.telephony.IccUtils;
  2250. +import com.android.internal.telephony.RILConstants;
  2251. +import com.android.internal.telephony.cdma.CdmaInformationRecords;
  2252. +
  2253. +import java.util.ArrayList;
  2254. +
  2255. +/**
  2256. + * Qualcomm RIL class for basebands that do not send the SIM status
  2257. + * piggybacked in RIL_UNSOL_RESPONSE_RADIO_STATE_CHANGED. Instead,
  2258. + * these radios will send radio state and we have to query for SIM
  2259. + * status separately.
  2260. + *
  2261. + * {@hide}
  2262. + */
  2263. +public class QualcommNoSimReadyRIL extends RIL implements CommandsInterface {
  2264. + protected HandlerThread mIccThread;
  2265. + protected IccHandler mIccHandler;
  2266. +
  2267. + private final int RIL_INT_RADIO_OFF = 0;
  2268. + private final int RIL_INT_RADIO_UNAVALIABLE = 1;
  2269. + private final int RIL_INT_RADIO_ON = 2;
  2270. +
  2271. + public QualcommNoSimReadyRIL(Context context) {
  2272. + super(context);
  2273. + }
  2274. +
  2275. + public QualcommNoSimReadyRIL(Context context, int networkMode, int cdmaSubs
  2276. + super(context, networkMode, cdmaSubscription);
  2277. + }
  2278. +
  2279. + @Override
  2280. + protected void
  2281. + processSolicited (Parcel p) {
  2282. + int serial, error;
  2283. + boolean found = false;
  2284. +
  2285. + serial = p.readInt();
  2286. + error = p.readInt();
  2287. +
  2288. + RILRequest rr;
  2289. +
  2290. + rr = findAndRemoveRequestFromList(serial);
  2291. +
  2292. + if (rr == null) {
  2293. + Log.w(LOG_TAG, "Unexpected solicited response! sn: "
  2294. + + serial + " error: " + error);
  2295. + return;
  2296. + }
  2297. +
  2298. + Object ret = null;
  2299. +
  2300. + if (error == 0 || p.dataAvail() > 0) {
  2301. + // either command succeeds or command fails but with data payload
  2302. + try {switch (rr.mRequest) {
  2303. + /*
  2304. + cat libs/telephony/ril_commands.h \
  2305. + | egrep "^ *{RIL_" \
  2306. + | sed -re 's/\{([^,]+),[^,]+,([^}]+).+/case \1: ret = \2(p); break;/'
  2307. + */
  2308. + case RIL_REQUEST_GET_SIM_STATUS: ret = responseIccCardStatus(p); b
  2309. + case RIL_REQUEST_ENTER_SIM_PIN: ret = responseInts(p); break;
  2310. + case RIL_REQUEST_ENTER_SIM_PUK: ret = responseInts(p); break;
  2311. + case RIL_REQUEST_ENTER_SIM_PIN2: ret = responseInts(p); break;
  2312. + case RIL_REQUEST_ENTER_SIM_PUK2: ret = responseInts(p); break;
  2313. + case RIL_REQUEST_CHANGE_SIM_PIN: ret = responseInts(p); break;
  2314. + case RIL_REQUEST_CHANGE_SIM_PIN2: ret = responseInts(p); break;
  2315. + case RIL_REQUEST_ENTER_NETWORK_DEPERSONALIZATION: ret = responseIn
  2316. + case RIL_REQUEST_GET_CURRENT_CALLS: ret = responseCallList(p); bre
  2317. + case RIL_REQUEST_DIAL: ret = responseVoid(p); break;
  2318. + case RIL_REQUEST_GET_IMSI: ret = responseString(p); break;
  2319. + case RIL_REQUEST_HANGUP: ret = responseVoid(p); break;
  2320. + case RIL_REQUEST_HANGUP_WAITING_OR_BACKGROUND: ret = responseVoid(
  2321. + case RIL_REQUEST_HANGUP_FOREGROUND_RESUME_BACKGROUND: ret = respon
  2322. + case RIL_REQUEST_SWITCH_WAITING_OR_HOLDING_AND_ACTIVE: ret = respo
  2323. + case RIL_REQUEST_CONFERENCE: ret = responseVoid(p); break;
  2324. + case RIL_REQUEST_UDUB: ret = responseVoid(p); break;
  2325. + case RIL_REQUEST_LAST_CALL_FAIL_CAUSE: ret = responseInts(p); brea
  2326. + case RIL_REQUEST_SIGNAL_STRENGTH: ret = responseSignalStrength(p);
  2327. + case RIL_REQUEST_REGISTRATION_STATE: ret = responseStrings(p); bre
  2328. + case RIL_REQUEST_GPRS_REGISTRATION_STATE: ret = responseStrings(p)
  2329. + case RIL_REQUEST_OPERATOR: ret = responseStrings(p); break;
  2330. + case RIL_REQUEST_RADIO_POWER: ret = responseVoid(p); break;
  2331. + case RIL_REQUEST_DTMF: ret = responseVoid(p); break;
  2332. + case RIL_REQUEST_SEND_SMS: ret = responseSMS(p); break;
  2333. + case RIL_REQUEST_SEND_SMS_EXPECT_MORE: ret = responseSMS(p); break
  2334. + case RIL_REQUEST_SETUP_DATA_CALL: ret = responseStrings(p); break;
  2335. + case RIL_REQUEST_SIM_IO: ret = responseICC_IO(p); break;
  2336. + case RIL_REQUEST_SEND_USSD: ret = responseVoid(p); break;
  2337. + case RIL_REQUEST_CANCEL_USSD: ret = responseVoid(p); break;
  2338. + case RIL_REQUEST_GET_CLIR: ret = responseInts(p); break;
  2339. + case RIL_REQUEST_SET_CLIR: ret = responseVoid(p); break;
  2340. + case RIL_REQUEST_QUERY_CALL_FORWARD_STATUS: ret = responseCallForw
  2341. + case RIL_REQUEST_SET_CALL_FORWARD: ret = responseVoid(p); break;
  2342. + case RIL_REQUEST_QUERY_CALL_WAITING: ret = responseInts(p); break;
  2343. + case RIL_REQUEST_SET_CALL_WAITING: ret = responseVoid(p); break;
  2344. + case RIL_REQUEST_SMS_ACKNOWLEDGE: ret = responseVoid(p); break;
  2345. + case RIL_REQUEST_GET_IMEI: ret = responseString(p); break;
  2346. + case RIL_REQUEST_GET_IMEISV: ret = responseString(p); break;
  2347. + case RIL_REQUEST_ANSWER: ret = responseVoid(p); break;
  2348. + case RIL_REQUEST_DEACTIVATE_DATA_CALL: ret = responseVoid(p); brea
  2349. + case RIL_REQUEST_QUERY_FACILITY_LOCK: ret = responseInts(p); break
  2350. + case RIL_REQUEST_SET_FACILITY_LOCK: ret = responseInts(p); break;
  2351. + case RIL_REQUEST_CHANGE_BARRING_PASSWORD: ret = responseVoid(p); b
  2352. + case RIL_REQUEST_QUERY_NETWORK_SELECTION_MODE: ret = responseInts(
  2353. + case RIL_REQUEST_SET_NETWORK_SELECTION_AUTOMATIC: ret = responseVo
  2354. + case RIL_REQUEST_SET_NETWORK_SELECTION_MANUAL: ret = responseVoid(
  2355. + case RIL_REQUEST_QUERY_AVAILABLE_NETWORKS : ret = responseNetworkI
  2356. + case RIL_REQUEST_DTMF_START: ret = responseVoid(p); break;
  2357. + case RIL_REQUEST_DTMF_STOP: ret = responseVoid(p); break;
  2358. + case RIL_REQUEST_BASEBAND_VERSION: ret = responseString(p); break;
  2359. + case RIL_REQUEST_SEPARATE_CONNECTION: ret = responseVoid(p); break
  2360. + case RIL_REQUEST_SET_MUTE: ret = responseVoid(p); break;
  2361. + case RIL_REQUEST_GET_MUTE: ret = responseInts(p); break;
  2362. + case RIL_REQUEST_QUERY_CLIP: ret = responseInts(p); break;
  2363. + case RIL_REQUEST_LAST_DATA_CALL_FAIL_CAUSE: ret = responseInts(p);
  2364. + case RIL_REQUEST_DATA_CALL_LIST: ret = responseDataCallList(p); br
  2365. + case RIL_REQUEST_RESET_RADIO: ret = responseVoid(p); break;
  2366. + case RIL_REQUEST_OEM_HOOK_RAW: ret = responseRaw(p); break;
  2367. + case RIL_REQUEST_OEM_HOOK_STRINGS: ret = responseStrings(p); break
  2368. + case RIL_REQUEST_SCREEN_STATE: ret = responseVoid(p); break;
  2369. + case RIL_REQUEST_SET_SUPP_SVC_NOTIFICATION: ret = responseVoid(p);
  2370. + case RIL_REQUEST_WRITE_SMS_TO_SIM: ret = responseInts(p); break;
  2371. + case RIL_REQUEST_DELETE_SMS_ON_SIM: ret = responseVoid(p); break;
  2372. + case RIL_REQUEST_SET_BAND_MODE: ret = responseVoid(p); break;
  2373. + case RIL_REQUEST_QUERY_AVAILABLE_BAND_MODE: ret = responseInts(p);
  2374. + case RIL_REQUEST_STK_GET_PROFILE: ret = responseString(p); break;
  2375. + case RIL_REQUEST_STK_SET_PROFILE: ret = responseVoid(p); break;
  2376. + case RIL_REQUEST_STK_SEND_ENVELOPE_COMMAND: ret = responseString(p
  2377. + case RIL_REQUEST_STK_SEND_TERMINAL_RESPONSE: ret = responseVoid(p)
  2378. + case RIL_REQUEST_STK_HANDLE_CALL_SETUP_REQUESTED_FROM_SIM: ret = r
  2379. + case RIL_REQUEST_EXPLICIT_CALL_TRANSFER: ret = responseVoid(p); br
  2380. + case RIL_REQUEST_SET_PREFERRED_NETWORK_TYPE: ret = responseVoid(p)
  2381. + case RIL_REQUEST_GET_PREFERRED_NETWORK_TYPE: ret = responseInts(p)
  2382. + case RIL_REQUEST_GET_NEIGHBORING_CELL_IDS: ret = responseCellList(p
  2383. + case RIL_REQUEST_SET_LOCATION_UPDATES: ret = responseVoid(p); brea
  2384. + case RIL_REQUEST_CDMA_SET_SUBSCRIPTION: ret = responseVoid(p); bre
  2385. + case RIL_REQUEST_CDMA_SET_ROAMING_PREFERENCE: ret = responseVoid(p
  2386. + case RIL_REQUEST_CDMA_QUERY_ROAMING_PREFERENCE: ret = responseInts
  2387. + case RIL_REQUEST_SET_TTY_MODE: ret = responseVoid(p); break;
  2388. + case RIL_REQUEST_QUERY_TTY_MODE: ret = responseInts(p); break;
  2389. + case RIL_REQUEST_CDMA_SET_PREFERRED_VOICE_PRIVACY_MODE: ret = resp
  2390. + case RIL_REQUEST_CDMA_QUERY_PREFERRED_VOICE_PRIVACY_MODE: ret = re
  2391. + case RIL_REQUEST_CDMA_FLASH: ret = responseVoid(p); break;
  2392. + case RIL_REQUEST_CDMA_BURST_DTMF: ret = responseVoid(p); break;
  2393. + case RIL_REQUEST_CDMA_SEND_SMS: ret = responseSMS(p); break;
  2394. + case RIL_REQUEST_CDMA_SMS_ACKNOWLEDGE: ret = responseVoid(p); brea
  2395. + case RIL_REQUEST_GSM_GET_BROADCAST_CONFIG: ret = responseGmsBroadc
  2396. + case RIL_REQUEST_GSM_SET_BROADCAST_CONFIG: ret = responseVoid(p);
  2397. + case RIL_REQUEST_GSM_BROADCAST_ACTIVATION: ret = responseVoid(p);
  2398. + case RIL_REQUEST_CDMA_GET_BROADCAST_CONFIG: ret = responseCdmaBroa
  2399. + case RIL_REQUEST_CDMA_SET_BROADCAST_CONFIG: ret = responseVoid(p);
  2400. + case RIL_REQUEST_CDMA_BROADCAST_ACTIVATION: ret = responseVoid(p);
  2401. + case RIL_REQUEST_CDMA_VALIDATE_AND_WRITE_AKEY: ret = responseVoid(
  2402. + case RIL_REQUEST_CDMA_SUBSCRIPTION: ret = responseStrings(p); brea
  2403. + case RIL_REQUEST_CDMA_WRITE_SMS_TO_RUIM: ret = responseInts(p); br
  2404. + case RIL_REQUEST_CDMA_DELETE_SMS_ON_RUIM: ret = responseVoid(p); b
  2405. + case RIL_REQUEST_DEVICE_IDENTITY: ret = responseStrings(p); break;
  2406. + case RIL_REQUEST_GET_SMSC_ADDRESS: ret = responseString(p); break;
  2407. + case RIL_REQUEST_SET_SMSC_ADDRESS: ret = responseVoid(p); break;
  2408. + case RIL_REQUEST_EXIT_EMERGENCY_CALLBACK_MODE: ret = responseVoid(p
  2409. + case RIL_REQUEST_REPORT_SMS_MEMORY_STATUS: ret = responseVoid(p); b
  2410. + case RIL_REQUEST_REPORT_STK_SERVICE_IS_RUNNING: ret = responseVoid(
  2411. + case 104: ret = responseInts(p); break; // RIL_REQUEST_VOICE_RADIO_
  2412. + case 105: ret = responseInts(p); break; // RIL_REQUEST_CDMA_GET_SUB
  2413. + case 106: ret = responseStrings(p); break; // RIL_REQUEST_CDMA_PRL_
  2414. + case 107: ret = responseInts(p); break; // RIL_REQUEST_IMS_REGISTR
  2415. + case 108: ret = responseSMS(p); break; // RIL_REQUEST_IMS_SEND_SMS
  2416. +
  2417. + default:
  2418. + throw new RuntimeException("Unrecognized solicited response: "
  2419. + //break;
  2420. + }} catch (Throwable tr) {
  2421. + // Exceptions here usually mean invalid RIL responses
  2422. +
  2423. + Log.w(LOG_TAG, rr.serialString() + "< "
  2424. + + requestToString(rr.mRequest)
  2425. + + " exception, possible invalid RIL response", tr);
  2426. +
  2427. + if (rr.mResult != null) {
  2428. + AsyncResult.forMessage(rr.mResult, null, tr);
  2429. + rr.mResult.sendToTarget();
  2430. + }
  2431. + rr.release();
  2432. + return;
  2433. + }
  2434. + }
  2435. +
  2436. + if (error != 0) {
  2437. + rr.onError(error, ret);
  2438. + rr.release();
  2439. + return;
  2440. + }
  2441. +
  2442. + if (RILJ_LOGD) riljLog(rr.serialString() + "< " + requestToString(rr.mR
  2443. + + " " + retToString(rr.mRequest, ret));
  2444. +
  2445. + if (rr.mResult != null) {
  2446. + AsyncResult.forMessage(rr.mResult, ret, null);
  2447. + rr.mResult.sendToTarget();
  2448. + }
  2449. +
  2450. + rr.release();
  2451. + }
  2452. +
  2453. + @Override
  2454. + protected void
  2455. + processUnsolicited (Parcel p) {
  2456. + int response;
  2457. + Object ret;
  2458. +
  2459. + response = p.readInt();
  2460. +
  2461. + try {switch(response) {
  2462. +/*
  2463. + cat libs/telephony/ril_unsol_commands.h \
  2464. + | egrep "^ *{RIL_" \
  2465. + | sed -re 's/\{([^,]+),[^,]+,([^}]+).+/case \1: \2(rr, p); break;/'
  2466. +*/
  2467. +
  2468. + case RIL_UNSOL_RESPONSE_RADIO_STATE_CHANGED: ret = responseVoid(p)
  2469. + case RIL_UNSOL_RESPONSE_CALL_STATE_CHANGED: ret = responseVoid(p);
  2470. + case RIL_UNSOL_RESPONSE_NETWORK_STATE_CHANGED: ret = responseVoid(
  2471. + case RIL_UNSOL_RESPONSE_NEW_SMS: ret = responseString(p); break;
  2472. + case RIL_UNSOL_RESPONSE_NEW_SMS_STATUS_REPORT: ret = responseStrin
  2473. + case RIL_UNSOL_RESPONSE_NEW_SMS_ON_SIM: ret = responseInts(p); bre
  2474. + case RIL_UNSOL_ON_USSD: ret = responseStrings(p); break;
  2475. + case RIL_UNSOL_NITZ_TIME_RECEIVED: ret = responseString(p); break;
  2476. + case RIL_UNSOL_SIGNAL_STRENGTH: ret = responseSignalStrength(p); br
  2477. + case RIL_UNSOL_DATA_CALL_LIST_CHANGED: ret = responseDataCallList(p
  2478. + case RIL_UNSOL_SUPP_SVC_NOTIFICATION: ret = responseSuppServiceNoti
  2479. + case RIL_UNSOL_STK_SESSION_END: ret = responseVoid(p); break;
  2480. + case RIL_UNSOL_STK_PROACTIVE_COMMAND: ret = responseString(p); brea
  2481. + case RIL_UNSOL_STK_EVENT_NOTIFY: ret = responseString(p); break;
  2482. + case RIL_UNSOL_STK_CALL_SETUP: ret = responseInts(p); break;
  2483. + case RIL_UNSOL_SIM_SMS_STORAGE_FULL: ret = responseVoid(p); break;
  2484. + case RIL_UNSOL_SIM_REFRESH: ret = responseInts(p); break;
  2485. + case RIL_UNSOL_CALL_RING: ret = responseCallRing(p); break;
  2486. + case RIL_UNSOL_RESTRICTED_STATE_CHANGED: ret = responseInts(p); bre
  2487. + case RIL_UNSOL_RESPONSE_SIM_STATUS_CHANGED: ret = responseVoid(p)
  2488. + case RIL_UNSOL_RESPONSE_CDMA_NEW_SMS: ret = responseCdmaSms(p); b
  2489. + case RIL_UNSOL_RESPONSE_NEW_BROADCAST_SMS: ret = responseRaw(p);
  2490. + case RIL_UNSOL_CDMA_RUIM_SMS_STORAGE_FULL: ret = responseVoid(p);
  2491. + case RIL_UNSOL_ENTER_EMERGENCY_CALLBACK_MODE: ret = responseVoid(p)
  2492. + case RIL_UNSOL_CDMA_CALL_WAITING: ret = responseCdmaCallWaiting(p);
  2493. + case RIL_UNSOL_CDMA_OTA_PROVISION_STATUS: ret = responseInts(p); br
  2494. + case RIL_UNSOL_CDMA_INFO_REC: ret = responseCdmaInformationRecord(p
  2495. + case RIL_UNSOL_OEM_HOOK_RAW: ret = responseRaw(p); break;
  2496. + case RIL_UNSOL_RINGBACK_TONE: ret = responseInts(p); break;
  2497. + case RIL_UNSOL_RESEND_INCALL_MUTE: ret = responseVoid(p); break;
  2498. + case 1031: ret = responseVoid(p); break; // RIL_UNSOL_VOICE_RADIO_T
  2499. + case 1032: ret = responseInts(p); break; // RIL_UNSOL_TETHERED_MODE
  2500. + case 1033: ret = responseVoid(p); break; // RIL_UNSOL_RESPONSE_DATA
  2501. + case 1034: ret = responseVoid(p); break; // RIL_UNSOL_CDMA_SUBSCRIP
  2502. + case 1035: ret = responseVoid(p); break; // RIL_UNSOL_CDMA_PRL_CHAN
  2503. + case 1036: ret = responseVoid(p); break; // RIL_UNSOL_RESPONSE_IMS_
  2504. + case 1037: ret = responseVoid(p); break; // RIL_UNSOL_EXIT_EMERGENC
  2505. +
  2506. + default:
  2507. + throw new RuntimeException("Unrecognized unsol response: " + re
  2508. + //break; (implied)
  2509. + }} catch (Throwable tr) {
  2510. + Log.e(LOG_TAG, "Exception processing unsol response: " + response +
  2511. + "Exception:" + tr.toString());
  2512. + return;
  2513. + }
  2514. +
  2515. + switch(response) {
  2516. + case RIL_UNSOL_RESPONSE_RADIO_STATE_CHANGED:
  2517. + int state = p.readInt();
  2518. + setRadioStateFromRILInt(state);
  2519. + break;
  2520. + case RIL_UNSOL_RESPONSE_CALL_STATE_CHANGED:
  2521. + if (RILJ_LOGD) unsljLog(response);
  2522. +
  2523. + mCallStateRegistrants
  2524. + .notifyRegistrants(new AsyncResult(null, null, null));
  2525. + break;
  2526. + case RIL_UNSOL_RESPONSE_NETWORK_STATE_CHANGED:
  2527. + if (RILJ_LOGD) unsljLog(response);
  2528. +
  2529. + mNetworkStateRegistrants
  2530. + .notifyRegistrants(new AsyncResult(null, null, null));
  2531. + break;
  2532. + case RIL_UNSOL_RESPONSE_NEW_SMS: {
  2533. + if (RILJ_LOGD) unsljLog(response);
  2534. +
  2535. + // FIXME this should move up a layer
  2536. + String a[] = new String[2];
  2537. +
  2538. + a[1] = (String)ret;
  2539. +
  2540. + SmsMessage sms;
  2541. +
  2542. + sms = SmsMessage.newFromCMT(a);
  2543. + if (mSMSRegistrant != null) {
  2544. + mSMSRegistrant
  2545. + .notifyRegistrant(new AsyncResult(null, sms, null));
  2546. + }
  2547. + break;
  2548. + }
  2549. + case RIL_UNSOL_RESPONSE_NEW_SMS_STATUS_REPORT:
  2550. + if (RILJ_LOGD) unsljLogRet(response, ret);
  2551. +
  2552. + if (mSmsStatusRegistrant != null) {
  2553. + mSmsStatusRegistrant.notifyRegistrant(
  2554. + new AsyncResult(null, ret, null));
  2555. + }
  2556. + break;
  2557. + case RIL_UNSOL_RESPONSE_NEW_SMS_ON_SIM:
  2558. + if (RILJ_LOGD) unsljLogRet(response, ret);
  2559. +
  2560. + int[] smsIndex = (int[])ret;
  2561. +
  2562. + if(smsIndex.length == 1) {
  2563. + if (mSmsOnSimRegistrant != null) {
  2564. + mSmsOnSimRegistrant.
  2565. + notifyRegistrant(new AsyncResult(null, smsIndex
  2566. + }
  2567. + } else {
  2568. + if (RILJ_LOGD) riljLog(" NEW_SMS_ON_SIM ERROR with wrong le
  2569. + + smsIndex.length);
  2570. + }
  2571. + break;
  2572. + case RIL_UNSOL_ON_USSD:
  2573. + String[] resp = (String[])ret;
  2574. +
  2575. + if (resp.length < 2) {
  2576. + resp = new String[2];
  2577. + resp[0] = ((String[])ret)[0];
  2578. + resp[1] = null;
  2579. + }
  2580. + if (RILJ_LOGD) unsljLogMore(response, resp[0]);
  2581. + if (mUSSDRegistrant != null) {
  2582. + mUSSDRegistrant.notifyRegistrant(
  2583. + new AsyncResult (null, resp, null));
  2584. + }
  2585. + break;
  2586. + case RIL_UNSOL_NITZ_TIME_RECEIVED:
  2587. + if (RILJ_LOGD) unsljLogRet(response, ret);
  2588. +
  2589. + // has bonus long containing milliseconds since boot that the N
  2590. + // time was received
  2591. + long nitzReceiveTime = p.readLong();
  2592. +
  2593. + Object[] result = new Object[2];
  2594. +
  2595. + result[0] = ret;
  2596. + result[1] = Long.valueOf(nitzReceiveTime);
  2597. +
  2598. + if (mNITZTimeRegistrant != null) {
  2599. +
  2600. + mNITZTimeRegistrant
  2601. + .notifyRegistrant(new AsyncResult (null, result, null))
  2602. + } else {
  2603. + // in case NITZ time registrant isnt registered yet
  2604. + mLastNITZTimeInfo = result;
  2605. + }
  2606. + break;
  2607. +
  2608. + case RIL_UNSOL_SIGNAL_STRENGTH:
  2609. + // Note this is set to "verbose" because it happens
  2610. + // frequently
  2611. + if (RILJ_LOGV) unsljLogvRet(response, ret);
  2612. +
  2613. + if (mSignalStrengthRegistrant != null) {
  2614. + mSignalStrengthRegistrant.notifyRegistrant(
  2615. + new AsyncResult (null, ret, null));
  2616. + }
  2617. + break;
  2618. + case RIL_UNSOL_DATA_CALL_LIST_CHANGED:
  2619. + if (RILJ_LOGD) unsljLogRet(response, ret);
  2620. +
  2621. + mDataConnectionRegistrants.notifyRegistrants(new AsyncResult(nu
  2622. + break;
  2623. +
  2624. + case RIL_UNSOL_SUPP_SVC_NOTIFICATION:
  2625. + if (RILJ_LOGD) unsljLogRet(response, ret);
  2626. +
  2627. + if (mSsnRegistrant != null) {
  2628. + mSsnRegistrant.notifyRegistrant(
  2629. + new AsyncResult (null, ret, null));
  2630. + }
  2631. + break;
  2632. +
  2633. + case RIL_UNSOL_STK_SESSION_END:
  2634. + if (RILJ_LOGD) unsljLog(response);
  2635. +
  2636. + if (mStkSessionEndRegistrant != null) {
  2637. + mStkSessionEndRegistrant.notifyRegistrant(
  2638. + new AsyncResult (null, ret, null));
  2639. + }
  2640. + break;
  2641. +
  2642. + case RIL_UNSOL_STK_PROACTIVE_COMMAND:
  2643. + if (RILJ_LOGD) unsljLogRet(response, ret);
  2644. +
  2645. + if (mStkProCmdRegistrant != null) {
  2646. + mStkProCmdRegistrant.notifyRegistrant(
  2647. + new AsyncResult (null, ret, null));
  2648. + }
  2649. + break;
  2650. +
  2651. + case RIL_UNSOL_STK_EVENT_NOTIFY:
  2652. + if (RILJ_LOGD) unsljLogRet(response, ret);
  2653. +
  2654. + if (mStkEventRegistrant != null) {
  2655. + mStkEventRegistrant.notifyRegistrant(
  2656. + new AsyncResult (null, ret, null));
  2657. + }
  2658. + break;
  2659. +
  2660. + case RIL_UNSOL_STK_CALL_SETUP:
  2661. + if (RILJ_LOGD) unsljLogRet(response, ret);
  2662. +
  2663. + if (mStkCallSetUpRegistrant != null) {
  2664. + mStkCallSetUpRegistrant.notifyRegistrant(
  2665. + new AsyncResult (null, ret, null));
  2666. + }
  2667. + break;
  2668. +
  2669. + case RIL_UNSOL_SIM_SMS_STORAGE_FULL:
  2670. + if (RILJ_LOGD) unsljLog(response);
  2671. +
  2672. + if (mIccSmsFullRegistrant != null) {
  2673. + mIccSmsFullRegistrant.notifyRegistrant();
  2674. + }
  2675. + break;
  2676. +
  2677. + case RIL_UNSOL_SIM_REFRESH:
  2678. + if (RILJ_LOGD) unsljLogRet(response, ret);
  2679. +
  2680. + if (mIccRefreshRegistrant != null) {
  2681. + mIccRefreshRegistrant.notifyRegistrant(
  2682. + new AsyncResult (null, ret, null));
  2683. + }
  2684. + break;
  2685. +
  2686. + case RIL_UNSOL_CALL_RING:
  2687. + if (RILJ_LOGD) unsljLogRet(response, ret);
  2688. +
  2689. + if (mRingRegistrant != null) {
  2690. + mRingRegistrant.notifyRegistrant(
  2691. + new AsyncResult (null, ret, null));
  2692. + }
  2693. + break;
  2694. +
  2695. + case RIL_UNSOL_RESTRICTED_STATE_CHANGED:
  2696. + if (RILJ_LOGD) unsljLogvRet(response, ret);
  2697. + if (mRestrictedStateRegistrant != null) {
  2698. + mRestrictedStateRegistrant.notifyRegistrant(
  2699. + new AsyncResult (null, ret, null));
  2700. + }
  2701. + break;
  2702. +
  2703. + case RIL_UNSOL_RESPONSE_SIM_STATUS_CHANGED:
  2704. + if (RILJ_LOGD) unsljLog(response);
  2705. +
  2706. + if (mIccStatusChangedRegistrants != null) {
  2707. + mIccStatusChangedRegistrants.notifyRegistrants();
  2708. + }
  2709. + break;
  2710. +
  2711. + case RIL_UNSOL_RESPONSE_CDMA_NEW_SMS:
  2712. + if (RILJ_LOGD) unsljLog(response);
  2713. +
  2714. + SmsMessage sms = (SmsMessage) ret;
  2715. +
  2716. + if (mSMSRegistrant != null) {
  2717. + mSMSRegistrant
  2718. + .notifyRegistrant(new AsyncResult(null, sms, null));
  2719. + }
  2720. + break;
  2721. +
  2722. + case RIL_UNSOL_RESPONSE_NEW_BROADCAST_SMS:
  2723. + if (RILJ_LOGD) unsljLog(response);
  2724. +
  2725. + if (mGsmBroadcastSmsRegistrant != null) {
  2726. + mGsmBroadcastSmsRegistrant
  2727. + .notifyRegistrant(new AsyncResult(null, ret, null));
  2728. + }
  2729. + break;
  2730. +
  2731. + case RIL_UNSOL_CDMA_RUIM_SMS_STORAGE_FULL:
  2732. + if (RILJ_LOGD) unsljLog(response);
  2733. +
  2734. + if (mIccSmsFullRegistrant != null) {
  2735. + mIccSmsFullRegistrant.notifyRegistrant();
  2736. + }
  2737. + break;
  2738. +
  2739. + case RIL_UNSOL_ENTER_EMERGENCY_CALLBACK_MODE:
  2740. + if (RILJ_LOGD) unsljLog(response);
  2741. +
  2742. + if (mEmergencyCallbackModeRegistrant != null) {
  2743. + mEmergencyCallbackModeRegistrant.notifyRegistrant();
  2744. + }
  2745. + break;
  2746. +
  2747. + case RIL_UNSOL_CDMA_CALL_WAITING:
  2748. + if (RILJ_LOGD) unsljLogRet(response, ret);
  2749. +
  2750. + if (mCallWaitingInfoRegistrants != null) {
  2751. + mCallWaitingInfoRegistrants.notifyRegistrants(
  2752. + new AsyncResult (null, ret, null));
  2753. + }
  2754. + break;
  2755. +
  2756. + case RIL_UNSOL_CDMA_OTA_PROVISION_STATUS:
  2757. + if (RILJ_LOGD) unsljLogRet(response, ret);
  2758. +
  2759. + if (mOtaProvisionRegistrants != null) {
  2760. + mOtaProvisionRegistrants.notifyRegistrants(
  2761. + new AsyncResult (null, ret, null));
  2762. + }
  2763. + break;
  2764. +
  2765. + case RIL_UNSOL_CDMA_INFO_REC:
  2766. + ArrayList<CdmaInformationRecords> listInfoRecs;
  2767. +
  2768. + try {
  2769. + listInfoRecs = (ArrayList<CdmaInformationRecords>)ret;
  2770. + } catch (ClassCastException e) {
  2771. + Log.e(LOG_TAG, "Unexpected exception casting to listInfoRec
  2772. + break;
  2773. + }
  2774. +
  2775. + for (CdmaInformationRecords rec : listInfoRecs) {
  2776. + if (RILJ_LOGD) unsljLogRet(response, rec);
  2777. + notifyRegistrantsCdmaInfoRec(rec);
  2778. + }
  2779. + break;
  2780. +
  2781. + case RIL_UNSOL_OEM_HOOK_RAW:
  2782. + if (RILJ_LOGD) unsljLogvRet(response, IccUtils.bytesToHexString
  2783. + if (mUnsolOemHookRawRegistrant != null) {
  2784. + mUnsolOemHookRawRegistrant.notifyRegistrant(new AsyncResult
  2785. + }
  2786. + break;
  2787. +
  2788. + case RIL_UNSOL_RINGBACK_TONE:
  2789. + if (RILJ_LOGD) unsljLogvRet(response, ret);
  2790. + if (mRingbackToneRegistrants != null) {
  2791. + boolean playtone = (((int[])ret)[0] == 1);
  2792. + mRingbackToneRegistrants.notifyRegistrants(
  2793. + new AsyncResult (null, playtone, null))
  2794. + }
  2795. + break;
  2796. +
  2797. + case RIL_UNSOL_RESEND_INCALL_MUTE:
  2798. + if (RILJ_LOGD) unsljLogRet(response, ret);
  2799. +
  2800. + if (mResendIncallMuteRegistrants != null) {
  2801. + mResendIncallMuteRegistrants.notifyRegistrants(
  2802. + new AsyncResult (null, ret, null));
  2803. + }
  2804. + break;
  2805. +
  2806. + case 1031:
  2807. + break;
  2808. + case 1032:
  2809. + break;
  2810. + case 1033:
  2811. + break;
  2812. + case 1034:
  2813. + break;
  2814. + case 1035:
  2815. + break;
  2816. + case 1036:
  2817. + break;
  2818. + case 1037:
  2819. + break;
  2820. +
  2821. + }
  2822. + }
  2823. +
  2824. + private void setRadioStateFromRILInt (int stateCode) {
  2825. + CommandsInterface.RadioState radioState;
  2826. + HandlerThread handlerThread;
  2827. + Looper looper;
  2828. + IccHandler iccHandler;
  2829. +
  2830. + switch (stateCode) {
  2831. + case RIL_INT_RADIO_OFF:
  2832. + radioState = CommandsInterface.RadioState.RADIO_OFF;
  2833. + break;
  2834. + case RIL_INT_RADIO_UNAVALIABLE:
  2835. + radioState = CommandsInterface.RadioState.RADIO_UNAVAILABLE;
  2836. + break;
  2837. + case RIL_INT_RADIO_ON:
  2838. + if (mIccHandler == null) {
  2839. + handlerThread = new HandlerThread("IccHandler");
  2840. + mIccThread = handlerThread;
  2841. +
  2842. + mIccThread.start();
  2843. +
  2844. + looper = mIccThread.getLooper();
  2845. + mIccHandler = new IccHandler(this,looper);
  2846. + mIccHandler.run();
  2847. + }
  2848. + if (mPhoneType == RILConstants.CDMA_PHONE) {
  2849. + radioState = CommandsInterface.RadioState.RUIM_NOT_READY;
  2850. + } else {
  2851. + radioState = CommandsInterface.RadioState.SIM_NOT_READY;
  2852. + }
  2853. + setRadioState(radioState);
  2854. + break;
  2855. + default:
  2856. + throw new RuntimeException("Unrecognized RIL_RadioState: " + st
  2857. + }
  2858. +
  2859. + if (mInitialRadioStateChange) {
  2860. + if (radioState.isOn()) {
  2861. + Log.d(LOG_TAG, "Radio ON @ init; reset to OFF");
  2862. + setRadioPower(false, null);
  2863. + }
  2864. + else {
  2865. + setRadioState (radioState);
  2866. + }
  2867. + mInitialRadioStateChange = false;
  2868. + }
  2869. + else {
  2870. + setRadioState (radioState);
  2871. + }
  2872. + }
  2873. + class IccHandler extends Handler implements Runnable {
  2874. + private static final int EVENT_RADIO_ON = 1;
  2875. + private static final int EVENT_ICC_STATUS_CHANGED = 2;
  2876. + private static final int EVENT_GET_ICC_STATUS_DONE = 3;
  2877. + private static final int EVENT_RADIO_OFF_OR_UNAVAILABLE = 4;
  2878. +
  2879. + private RIL mRil;
  2880. + private boolean mRadioOn = false;
  2881. +
  2882. + public IccHandler (RIL ril, Looper looper) {
  2883. + super (looper);
  2884. + mRil = ril;
  2885. + }
  2886. +
  2887. + public void handleMessage (Message paramMessage) {
  2888. + switch (paramMessage.what) {
  2889. + case EVENT_RADIO_ON:
  2890. + mRadioOn = true;
  2891. + Log.d(LOG_TAG, "Radio on -> Forcing sim status update");
  2892. + sendMessage(obtainMessage(EVENT_ICC_STATUS_CHANGED));
  2893. + break;
  2894. + case EVENT_GET_ICC_STATUS_DONE:
  2895. + AsyncResult asyncResult = (AsyncResult) paramMessage.obj;
  2896. + if (asyncResult.exception != null) {
  2897. + Log.e (LOG_TAG, "IccCardStatusDone shouldn't return exc
  2898. + break;
  2899. + }
  2900. + IccCardStatus status = (IccCardStatus) asyncResult.result;
  2901. + if (status.getNumApplications() == 0) {
  2902. + if (!mRil.getRadioState().isOn()) {
  2903. + break;
  2904. + }
  2905. +
  2906. + if (mPhoneType == RILConstants.CDMA_PHONE) {
  2907. + mRil.setRadioState(CommandsInterface.RadioState.RUI
  2908. + } else {
  2909. + mRil.setRadioState(CommandsInterface.RadioState.SIM
  2910. + }
  2911. + } else {
  2912. + int appIndex = -1;
  2913. + if (mPhoneType == RILConstants.CDMA_PHONE) {
  2914. + appIndex = status.getCdmaSubscriptionAppIndex();
  2915. + Log.d(LOG_TAG, "This is a CDMA PHONE " + appIndex);
  2916. + } else {
  2917. + appIndex = status.getGsmUmtsSubscriptionAppIndex();
  2918. + Log.d(LOG_TAG, "This is a GSM PHONE " + appIndex);
  2919. + }
  2920. +
  2921. + IccCardApplication application = status.getApplication(
  2922. + IccCardApplication.AppState app_state = application.app
  2923. + IccCardApplication.AppType app_type = application.app_t
  2924. +
  2925. + switch (app_state) {
  2926. + case APPSTATE_PIN:
  2927. + case APPSTATE_PUK:
  2928. + switch (app_type) {
  2929. + case APPTYPE_SIM:
  2930. + case APPTYPE_USIM:
  2931. + mRil.setRadioState(CommandsInterface.Ra
  2932. + break;
  2933. + case APPTYPE_RUIM:
  2934. + mRil.setRadioState(CommandsInterface.Ra
  2935. + break;
  2936. + default:
  2937. + Log.e(LOG_TAG, "Currently we don't hand
  2938. + return;
  2939. + }
  2940. + break;
  2941. + case APPSTATE_READY:
  2942. + switch (app_type) {
  2943. + case APPTYPE_SIM:
  2944. + case APPTYPE_USIM:
  2945. + mRil.setRadioState(CommandsInterface.Ra
  2946. + break;
  2947. + case APPTYPE_RUIM:
  2948. + mRil.setRadioState(CommandsInterface.Ra
  2949. + break;
  2950. + default:
  2951. + Log.e(LOG_TAG, "Currently we don't hand
  2952. + return;
  2953. + }
  2954. + break;
  2955. + default:
  2956. + return;
  2957. + }
  2958. + }
  2959. + break;
  2960. + case EVENT_ICC_STATUS_CHANGED:
  2961. + if (mRadioOn) {
  2962. + Log.d(LOG_TAG, "Received EVENT_ICC_STATUS_CHANGED, call
  2963. + mRil.getIccCardStatus(obtainMessage(EVENT_GET_ICC_STAT
  2964. + } else {
  2965. + Log.d(LOG_TAG, "Received EVENT_ICC_STATUS_CHANGED whil
  2966. + }
  2967. + break;
  2968. + case EVENT_RADIO_OFF_OR_UNAVAILABLE:
  2969. + mRadioOn = false;
  2970. + // disposeCards(); // to be verified;
  2971. + default:
  2972. + Log.e(LOG_TAG, " Unknown Event " + paramMessage.what);
  2973. + break;
  2974. + }
  2975. + }
  2976. +
  2977. + public void run () {
  2978. + mRil.registerForIccStatusChanged(this, EVENT_ICC_STATUS_CHANGED, nu
  2979. + Message msg = obtainMessage(EVENT_RADIO_ON);
  2980. + mRil.getIccCardStatus(msg);
  2981. + }
  2982. + }
  2983. +}
  2984. diff --git a/telephony/java/com/android/internal/telephony/SemcRIL.java b/teleph
  2985. new file mode 100644
  2986. index 0000000..a907378
  2987. --- /dev/null
  2988. +++ b/telephony/java/com/android/internal/telephony/SemcRIL.java
  2989. @@ -0,0 +1,443 @@
  2990. +/*
  2991. + * Copyright (C) 2011 The CyanogenMod Project
  2992. + *
  2993. + * Licensed under the Apache License, Version 2.0 (the "License");
  2994. + * you may not use this file except in compliance with the License.
  2995. + * You may obtain a copy of the License at
  2996. + *
  2997. + * http://www.apache.org/licenses/LICENSE-2.0
  2998. + *
  2999. + * Unless required by applicable law or agreed to in writing, software
  3000. + * distributed under the License is distributed on an "AS IS" BASIS,
  3001. + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  3002. + * See the License for the specific language governing permissions and
  3003. + * limitations under the License.
  3004. + */
  3005. +
  3006. +package com.android.internal.telephony;
  3007. +
  3008. +import static com.android.internal.telephony.RILConstants.*;
  3009. +
  3010. +import android.content.Context;
  3011. +import android.os.Message;
  3012. +import android.os.Parcel;
  3013. +import android.util.Log;
  3014. +
  3015. +import com.android.internal.telephony.DataCallState;
  3016. +import com.android.internal.telephony.gsm.NetworkInfo;
  3017. +import com.android.internal.telephony.IccCardApplication;
  3018. +import com.android.internal.telephony.IccCardStatus;
  3019. +
  3020. +import java.util.ArrayList;
  3021. +
  3022. +
  3023. +/**
  3024. + * Custom SEMC ril
  3025. + *
  3026. + * {@hide}
  3027. + */
  3028. +public class SemcRIL extends QualcommNoSimReadyRIL implements CommandsInterface
  3029. + protected String mAid;
  3030. +
  3031. +
  3032. + public SemcRIL(Context context) {
  3033. + super(context);
  3034. + }
  3035. +
  3036. + public SemcRIL(Context context, int networkMode, int cdmaSubscription) {
  3037. + super(context, networkMode, cdmaSubscription);
  3038. + }
  3039. +
  3040. + @Override
  3041. + public void
  3042. + supplyIccPin(String pin, Message result) {
  3043. + // but this request is also valid for SIM and RUIM
  3044. + RILRequest rr = RILRequest.obtain(RIL_REQUEST_ENTER_SIM_PIN, result);
  3045. +
  3046. +
  3047. + if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mR
  3048. +
  3049. + rr.mp.writeInt(0);
  3050. + rr.mp.writeString(mAid);
  3051. + rr.mp.writeString(pin);
  3052. +
  3053. + send(rr);
  3054. + }
  3055. +
  3056. + @Override
  3057. + public void
  3058. + supplyIccPuk(String puk, String newPin, Message result) {
  3059. + //Note: This RIL request has not been renamed to ICC,
  3060. + // but this request is also valid for SIM and RUIM
  3061. + RILRequest rr = RILRequest.obtain(RIL_REQUEST_ENTER_SIM_PUK, result);
  3062. +
  3063. + if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mR
  3064. +
  3065. + rr.mp.writeInt(0);
  3066. + rr.mp.writeString(mAid);
  3067. + rr.mp.writeString(puk);
  3068. + rr.mp.writeString(newPin);
  3069. +
  3070. + send(rr);
  3071. + }
  3072. +
  3073. + @Override
  3074. + public void
  3075. + supplyIccPin2(String pin, Message result) {
  3076. + //Note: This RIL request has not been renamed to ICC,
  3077. + // but this request is also valid for SIM and RUIM
  3078. + RILRequest rr = RILRequest.obtain(RIL_REQUEST_ENTER_SIM_PIN2, result);
  3079. +
  3080. + if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mR
  3081. +
  3082. + rr.mp.writeInt(0);
  3083. + rr.mp.writeString(mAid);
  3084. + rr.mp.writeString(pin);
  3085. +
  3086. + send(rr);
  3087. + }
  3088. +
  3089. + @Override
  3090. + public void
  3091. + supplyIccPuk2(String puk, String newPin2, Message result) {
  3092. + //Note: This RIL request has not been renamed to ICC,
  3093. + // but this request is also valid for SIM and RUIM
  3094. + RILRequest rr = RILRequest.obtain(RIL_REQUEST_ENTER_SIM_PUK2, result);
  3095. +
  3096. + if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mR
  3097. +
  3098. + rr.mp.writeInt(0);
  3099. + rr.mp.writeString(mAid);
  3100. + rr.mp.writeString(puk);
  3101. + rr.mp.writeString(newPin2);
  3102. +
  3103. + send(rr);
  3104. + }
  3105. +
  3106. + @Override
  3107. + public void
  3108. + changeIccPin(String oldPin, String newPin, Message result) {
  3109. + //Note: This RIL request has not been renamed to ICC,
  3110. + // but this request is also valid for SIM and RUIM
  3111. + RILRequest rr = RILRequest.obtain(RIL_REQUEST_CHANGE_SIM_PIN, result);
  3112. +
  3113. + if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mR
  3114. +
  3115. + rr.mp.writeInt(0);
  3116. + rr.mp.writeString(mAid);
  3117. + rr.mp.writeString(oldPin);
  3118. + rr.mp.writeString(newPin);
  3119. +
  3120. + send(rr);
  3121. + }
  3122. +
  3123. + @Override
  3124. + public void
  3125. + changeIccPin2(String oldPin2, String newPin2, Message result) {
  3126. + //Note: This RIL request has not been renamed to ICC,
  3127. + // but this request is also valid for SIM and RUIM
  3128. + RILRequest rr = RILRequest.obtain(RIL_REQUEST_CHANGE_SIM_PIN2, result);
  3129. +
  3130. + if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mR
  3131. +
  3132. + rr.mp.writeInt(0);
  3133. + rr.mp.writeString(mAid);
  3134. + rr.mp.writeString(oldPin2);
  3135. + rr.mp.writeString(newPin2);
  3136. +
  3137. + send(rr);
  3138. + }
  3139. +
  3140. + @Override
  3141. + public void
  3142. + changeBarringPassword(String facility, String oldPwd, String newPwd, Messag
  3143. + RILRequest rr = RILRequest.obtain(RIL_REQUEST_CHANGE_BARRING_PASSWORD,
  3144. +
  3145. + if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mR
  3146. +
  3147. + rr.mp.writeInt(3);
  3148. + rr.mp.writeString(facility);
  3149. + rr.mp.writeString(oldPwd);
  3150. + rr.mp.writeString(newPwd);
  3151. +
  3152. + send(rr);
  3153. + }
  3154. +
  3155. + @Override
  3156. + public void
  3157. + supplyNetworkDepersonalization(String netpin, Message result) {
  3158. + RILRequest rr = RILRequest.obtain(RIL_REQUEST_ENTER_NETWORK_DEPERSONALI
  3159. +
  3160. + if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mR
  3161. +
  3162. + rr.mp.writeInt(3);
  3163. + rr.mp.writeString(netpin);
  3164. +
  3165. + send(rr);
  3166. + }
  3167. +
  3168. + @Override
  3169. + public void
  3170. + dial(String address, int clirMode, UUSInfo uusInfo, Message result) {
  3171. + RILRequest rr = RILRequest.obtain(RIL_REQUEST_DIAL, result);
  3172. +
  3173. + rr.mp.writeString(address);
  3174. + rr.mp.writeInt(clirMode);
  3175. +
  3176. + if (uusInfo == null) {
  3177. + rr.mp.writeInt(0); // UUS information is absent
  3178. + } else {
  3179. + rr.mp.writeInt(1); // UUS information is present
  3180. + rr.mp.writeInt(uusInfo.getType());
  3181. + rr.mp.writeInt(uusInfo.getDcs());
  3182. + rr.mp.writeByteArray(uusInfo.getUserData());
  3183. + }
  3184. + rr.mp.writeInt(0xff);
  3185. +
  3186. + if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mR
  3187. +
  3188. + send(rr);
  3189. + }
  3190. +
  3191. + @Override
  3192. + public void
  3193. + getIMSI(Message result) {
  3194. + RILRequest rr = RILRequest.obtain(RIL_REQUEST_GET_IMSI, result);
  3195. + rr.mp.writeInt(0);
  3196. + rr.mp.writeString(mAid);
  3197. + if (RILJ_LOGD) riljLog(rr.serialString() +
  3198. + "> getIMSI:RIL_REQUEST_GET_IMSI " +
  3199. + RIL_REQUEST_GET_IMSI +
  3200. + " " + requestToString(rr.mRequest));
  3201. +
  3202. + send(rr);
  3203. + }
  3204. +
  3205. + @Override
  3206. + public void
  3207. + setupDataCall(String radioTechnology, String profile, String apn,
  3208. + String user, String password, String authType, String protocol,
  3209. + Message result) {
  3210. + RILRequest rr
  3211. + = RILRequest.obtain(RIL_REQUEST_SETUP_DATA_CALL, result);
  3212. +
  3213. + rr.mp.writeInt(7);
  3214. +
  3215. + rr.mp.writeString(radioTechnology);
  3216. + rr.mp.writeString(profile);
  3217. + rr.mp.writeString(apn);
  3218. + rr.mp.writeString(user);
  3219. + rr.mp.writeString(password);
  3220. + rr.mp.writeString(authType);
  3221. + rr.mp.writeString("0");
  3222. +
  3223. + if (RILJ_LOGD) riljLog(rr.serialString() + "> "
  3224. + + requestToString(rr.mRequest) + " " + radioTechnology + " "
  3225. + + profile + " " + apn + " " + user + " "
  3226. + + password + " " + authType + " " + protocol);
  3227. +
  3228. + send(rr);
  3229. + }
  3230. +
  3231. + @Override
  3232. + public void
  3233. + iccIO (int command, int fileid, String path, int p1, int p2, int p3,
  3234. + String data, String pin2, Message result) {
  3235. + //Note: This RIL request has not been renamed to ICC,
  3236. + // but this request is also valid for SIM and RUIM
  3237. + RILRequest rr
  3238. + = RILRequest.obtain(RIL_REQUEST_SIM_IO, result);
  3239. +
  3240. + rr.mp.writeInt(0);
  3241. + rr.mp.writeString(mAid);
  3242. + rr.mp.writeInt(command);
  3243. + rr.mp.writeInt(fileid);
  3244. + rr.mp.writeString(path);
  3245. + rr.mp.writeInt(p1);
  3246. + rr.mp.writeInt(p2);
  3247. + rr.mp.writeInt(p3);
  3248. + rr.mp.writeString(data);
  3249. + rr.mp.writeString(pin2);
  3250. +
  3251. + if (RILJ_LOGD) riljLog(rr.serialString() + "> iccIO: " + requestToStrin
  3252. + + " 0x" + Integer.toHexString(command)
  3253. + + " 0x" + Integer.toHexString(fileid) + " "
  3254. + + " path: " + path + ","
  3255. + + p1 + "," + p2 + "," + p3);
  3256. +
  3257. + send(rr);
  3258. + }
  3259. +
  3260. + @Override
  3261. + public void
  3262. + setNetworkSelectionModeAutomatic(Message response) {
  3263. + RILRequest rr
  3264. + = RILRequest.obtain(RIL_REQUEST_SET_NETWORK_SELECTION_AUTOMATIC
  3265. + response);
  3266. +
  3267. + if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mR
  3268. +
  3269. + rr.mp.writeString(null);
  3270. + rr.mp.writeInt(-1);
  3271. + send(rr);
  3272. + }
  3273. +
  3274. + @Override
  3275. + public void
  3276. + setNetworkSelectionModeManual(String operatorNumeric, Message response) {
  3277. + RILRequest rr
  3278. + = RILRequest.obtain(RIL_REQUEST_SET_NETWORK_SELECTION_MANUAL,
  3279. + response);
  3280. +
  3281. + if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mR
  3282. + + " " + operatorNumeric);
  3283. +
  3284. + rr.mp.writeString(operatorNumeric);
  3285. + rr.mp.writeInt(-1);
  3286. +
  3287. + send(rr);
  3288. + }
  3289. +
  3290. + @Override
  3291. + public void
  3292. + queryFacilityLock (String facility, String password, int serviceClass,
  3293. + Message response) {
  3294. + RILRequest rr = RILRequest.obtain(RIL_REQUEST_QUERY_FACILITY_LOCK, resp
  3295. +
  3296. + if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mR
  3297. +
  3298. + // count strings
  3299. + rr.mp.writeInt(5);
  3300. + rr.mp.writeString("0");
  3301. + rr.mp.writeString(mAid);
  3302. + rr.mp.writeString(facility);
  3303. + rr.mp.writeString(password);
  3304. +
  3305. + rr.mp.writeString(Integer.toString(serviceClass));
  3306. +
  3307. + send(rr);
  3308. + }
  3309. +
  3310. + @Override
  3311. + public void
  3312. + setFacilityLock (String facility, boolean lockState, String password,
  3313. + int serviceClass, Message response) {
  3314. + String lockString;
  3315. + RILRequest rr
  3316. + = RILRequest.obtain(RIL_REQUEST_SET_FACILITY_LOCK, response);
  3317. +
  3318. + if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mR
  3319. +
  3320. + // count strings
  3321. + rr.mp.writeInt(6);
  3322. +
  3323. + rr.mp.writeString("0");
  3324. + rr.mp.writeString(mAid);
  3325. + rr.mp.writeString(facility);
  3326. + lockString = (lockState)?"1":"0";
  3327. + rr.mp.writeString(lockString);
  3328. + rr.mp.writeString(password);
  3329. + rr.mp.writeString(Integer.toString(serviceClass));
  3330. +
  3331. + send(rr);
  3332. +
  3333. + }
  3334. +
  3335. + @Override
  3336. + protected Object
  3337. + responseIccCardStatus(Parcel p) {
  3338. + IccCardApplication ca;
  3339. +
  3340. + IccCardStatus status = new IccCardStatus();
  3341. + p.readInt(); // unknown first parameter
  3342. + status.setCardState(p.readInt());
  3343. + status.setUniversalPinState(p.readInt());
  3344. + int gsmUmtsSubscriptionAppCount = p.readInt();
  3345. + int n = 0;
  3346. + for (int i = 0; i < gsmUmtsSubscriptionAppCount; i++) {
  3347. + n = p.readInt();
  3348. + }
  3349. + status.setGsmUmtsSubscriptionAppIndex(n);
  3350. +
  3351. + int cdmaSubscriptionAppCount = p.readInt();
  3352. + for (int i = 0; i < cdmaSubscriptionAppCount; i++) {
  3353. + n = p.readInt();
  3354. + }
  3355. + status.setCdmaSubscriptionAppIndex(n);
  3356. + int numApplications = p.readInt();
  3357. +
  3358. + // limit to maximum allowed applications
  3359. + if (numApplications > IccCardStatus.CARD_MAX_APPS) {
  3360. + numApplications = IccCardStatus.CARD_MAX_APPS;
  3361. + }
  3362. + status.setNumApplications(numApplications);
  3363. +
  3364. + for (int i = 0 ; i < numApplications ; i++) {
  3365. + ca = new IccCardApplication();
  3366. + ca.app_type = ca.AppTypeFromRILInt(p.readInt());
  3367. + ca.app_state = ca.AppStateFromRILInt(p.readInt());
  3368. + ca.perso_substate = ca.PersoSubstateFromRILInt(p.readInt());
  3369. + ca.aid = p.readString();
  3370. + ca.app_label = p.readString();
  3371. + ca.pin1_replaced = p.readInt();
  3372. + ca.pin1 = p.readInt();
  3373. + ca.pin2 = p.readInt();
  3374. + status.addApplication(ca);
  3375. +
  3376. + mAid = ca.aid;
  3377. + }
  3378. +
  3379. + return status;
  3380. + }
  3381. +
  3382. + @Override
  3383. + protected Object
  3384. + responseDataCallList(Parcel p) {
  3385. + int num;
  3386. + ArrayList<DataCallState> response;
  3387. +
  3388. + num = p.readInt();
  3389. + response = new ArrayList<DataCallState>(num);
  3390. +
  3391. + for (int i = 0; i < num; i++) {
  3392. + DataCallState dataCall = new DataCallState();
  3393. +
  3394. + dataCall.cid = p.readInt();
  3395. + dataCall.active = p.readInt();
  3396. + dataCall.type = p.readString();
  3397. + dataCall.apn = p.readString();
  3398. + dataCall.address = p.readString();
  3399. + p.readInt();
  3400. + p.readInt();
  3401. + response.add(dataCall);
  3402. + }
  3403. +
  3404. + return response;
  3405. + }
  3406. +
  3407. + @Override
  3408. + protected Object
  3409. + responseNetworkInfos(Parcel p) {
  3410. + String strings[] = (String [])responseStrings(p);
  3411. + ArrayList<NetworkInfo> ret;
  3412. +
  3413. + if (strings.length % 5 != 0) {
  3414. + throw new RuntimeException(
  3415. + "RIL_REQUEST_QUERY_AVAILABLE_NETWORKS: invalid response. Got "
  3416. + + strings.length + " strings, expected multible of 5");
  3417. + }
  3418. +
  3419. + ret = new ArrayList<NetworkInfo>(strings.length / 5);
  3420. +
  3421. + for (int i = 0 ; i < strings.length ; i += 5) {
  3422. + ret.add (
  3423. + new NetworkInfo(
  3424. + strings[i+0],
  3425. + strings[i+1],
  3426. + strings[i+2],
  3427. + strings[i+3]));
  3428. + }
  3429. +
  3430. + return ret;
  3431. + }
  3432. +}
  3433. diff --git a/telephony/java/com/android/internal/telephony/gsm/SmsMessage.java b
  3434. index 0be9466..136e2ea 100644
  3435. --- a/telephony/java/com/android/internal/telephony/gsm/SmsMessage.java
  3436. +++ b/telephony/java/com/android/internal/telephony/gsm/SmsMessage.java
  3437. @@ -1027,7 +1027,12 @@ public class SmsMessage extends SmsMessageBase{
  3438. case 3: // reserved
  3439. Log.w(LOG_TAG, "1 - Unsupported SMS data coding scheme "
  3440. + (dataCodingScheme & 0xff));
  3441. - encodingType = ENCODING_8BIT;
  3442. + if (SimRegionCache.getRegion() == SimRegionCache.MCC_KOREAN
  3443. + Log.w(LOG_TAG, "Korean SIM, using KSC5601 for decoding.
  3444. + encodingType = ENCODING_KSC5601;
  3445. + } else {
  3446. + encodingType = ENCODING_8BIT;
  3447. + }
  3448. break;
  3449. }
  3450. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement