diff --git a/res/layout/preference_app_header_animation.xml b/res/layout/preference_app_header_animation.xml new file mode 100644 index 00000000000..330d118c4e2 --- /dev/null +++ b/res/layout/preference_app_header_animation.xml @@ -0,0 +1,61 @@ + + + + + + + + + + \ No newline at end of file diff --git a/res/raw/app_cloning.json b/res/raw/app_cloning.json new file mode 100644 index 00000000000..1df485a23d5 --- /dev/null +++ b/res/raw/app_cloning.json @@ -0,0 +1 @@ +{"v":"5.9.0","fr":60,"ip":0,"op":420,"w":412,"h":300,"nm":"App_Cloning","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":3,"nm":"Null 1","sr":1,"ks":{"o":{"a":0,"k":0,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[206,150,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.833],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.167],"y":[0,0,0]},"t":10,"s":[100,100,100]},{"i":{"x":[0.3,0.3,0.833],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.167],"y":[0,0,0]},"t":90,"s":[170,170,100]},{"i":{"x":[0.3,0.3,0.833],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.167],"y":[0,0,0]},"t":98,"s":[170,170,100]},{"i":{"x":[0.3,0.3,0.833],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.167],"y":[0,0,0]},"t":150,"s":[90,90,100]},{"i":{"x":[0.3,0.3,0.833],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.167],"y":[0,0,0]},"t":304,"s":[90,90,100]},{"t":364,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"ip":0,"op":11400,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":".yellow400","cl":"yellow400","parent":3,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,-5.179,0],"ix":2,"l":2},"a":{"a":0,"k":[316.566,79.078,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[3.312,-3.725],[4.929,0],[1.542,-4.424],[0,5.325],[-11.649,0],[-0.07,-11.649]],"o":[[-1.409,-4.552],[-4.884,0],[-3.254,-3.711],[0,-11.649],[11.579,0],[0,5.378]],"v":[[15.746,13.994],[-0.07,7.193],[-15.847,13.884],[-21.088,0],[0,-21.088],[21.088,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[13.263,0],[0,-13.263],[-13.228,0],[-0.07,13.228]],"o":[[-13.263,0],[0,13.263],[13.158,0],[0,-13.263]],"v":[[0,-24],[-24,0],[0,24],[24,0]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.988235294819,0.78823530674,0.203921571374,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[316.566,79.078],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[4,0],[0,-4],[-4.105,0],[0,4]],"o":[[-4,0],[-0.07,4],[4.035,0],[0,-4]],"v":[[0.001,-7.263],[-7.263,0],[0.001,7.263],[7.264,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.988235294819,0.78823530674,0.203921571374,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[316.566,73.218],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false}],"ip":190,"op":11590,"st":190,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":".yellow400","cl":"yellow400","parent":7,"sr":1,"ks":{"o":{"a":0,"k":20,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[2.222,-72.507,0],"ix":2,"l":2},"a":{"a":0,"k":[2.222,48.236,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.833],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.167],"y":[0,0,0]},"t":207,"s":[0,0,100]},{"i":{"x":[0.2,0.2,0.833],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.167],"y":[0,0,0]},"t":217,"s":[110,110,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":227,"s":[100,100,100]},{"i":{"x":[0.2,0.2,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":304,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.167],"y":[0,0,0]},"t":314,"s":[110,110,100]},{"t":324,"s":[0,0,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,22.434],[24.701,0],[0,-24.701],[-21.537,-3.221],[0,0],[-0.916,1.831],[0,0]],"o":[[0,-24.701],[-24.701,0],[0,22.434],[0,0],[0.916,1.831],[0,0],[21.537,-3.221]],"v":[[44.725,-4.885],[0,-49.61],[-44.725,-4.885],[-6.669,39.342],[-2.222,48.236],[2.222,48.236],[6.67,39.342]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.988235294819,0.78823530674,0.203921571374,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":190,"op":11590,"st":190,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":".green400","cl":"green400","parent":5,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,-5.179,0],"ix":2,"l":2},"a":{"a":0,"k":[95.434,79.078,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[3.312,-3.725],[4.929,0],[1.542,-4.424],[0,5.325],[-11.649,0],[-0.07,-11.649]],"o":[[-1.409,-4.552],[-4.884,0],[-3.254,-3.711],[0,-11.649],[11.579,0],[0,5.378]],"v":[[15.746,13.994],[-0.07,7.193],[-15.847,13.884],[-21.088,0],[0,-21.088],[21.088,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[13.263,0],[0,-13.263],[-13.228,0],[-0.07,13.228]],"o":[[-13.263,0],[0,13.263],[13.158,0],[0,-13.263]],"v":[[0,-24],[-24,0],[0,24],[24,0]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.35686275363,0.72549021244,0.454901963472,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[95.434,79.078],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[4,0],[0,-4],[-4.105,0],[0,4]],"o":[[-4,0],[-0.07,4],[4.035,0],[0,-4]],"v":[[0.001,-7.263],[-7.263,0],[0.001,7.263],[7.264,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.35686275363,0.72549021244,0.454901963472,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[95.433,73.218],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false}],"ip":190,"op":11590,"st":190,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":".green400","cl":"green400","parent":7,"sr":1,"ks":{"o":{"a":0,"k":20,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-220.566,-72.507,0],"ix":2,"l":2},"a":{"a":0,"k":[0.566,48.236,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.833],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.167],"y":[0,0,0]},"t":202,"s":[0,0,100]},{"i":{"x":[0.2,0.2,0.833],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.167],"y":[0,0,0]},"t":212,"s":[110,110,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":222,"s":[100,100,100]},{"i":{"x":[0.2,0.2,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":309,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.167],"y":[0,0,0]},"t":319,"s":[110,110,100]},{"t":329,"s":[0,0,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,22.434],[24.701,0],[0,-24.701],[-21.537,-3.221],[0,0],[-0.916,1.831],[0,0]],"o":[[0,-24.701],[-24.701,0],[0,22.434],[0,0],[0.916,1.831],[0,0],[21.537,-3.221]],"v":[[44.725,-4.885],[0,-49.61],[-44.725,-4.885],[-6.669,39.342],[-2.222,48.236],[2.222,48.236],[6.67,39.342]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.35686275363,0.72549021244,0.454901963472,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":190,"op":11590,"st":190,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":".blue400","cl":"blue400","parent":9,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":389,"s":[100]},{"t":419,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[34.444,34.444,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.833],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.167],"y":[0,0,0]},"t":146,"s":[0,0,100]},{"i":{"x":[0.2,0.2,0.833],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.167],"y":[0,0,0]},"t":156,"s":[110,110,100]},{"t":166,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-11.046],[11.046,0],[0,11.046],[-11.046,0]],"o":[[0,11.046],[-11.046,0],[0,-11.046],[11.046,0]],"v":[[20,0],[0,20],[-20,0],[0,-20]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":98,"op":11394,"st":-6,"bm":0},{"ddd":0,"ind":7,"ty":3,"nm":"Apps_Blue400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.8],"y":[0]},"t":98,"s":[100]},{"t":150,"s":[40]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.8,"y":0},"t":98,"s":[0.566,0,0],"to":[18.333,0,0],"ti":[-18.333,0,0]},{"i":{"x":0.2,"y":0.2},"o":{"x":0.8,"y":0.8},"t":150,"s":[110.566,0,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.2,"y":1},"o":{"x":0.8,"y":0},"t":187,"s":[110.566,0,0],"to":[0,9.167,0],"ti":[0,-9.167,0]},{"i":{"x":0.2,"y":0.2},"o":{"x":0.8,"y":0.8},"t":227,"s":[110.566,55,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.2,"y":1},"o":{"x":0.8,"y":0},"t":304,"s":[110.566,55,0],"to":[-23.083,-14.104,0],"ti":[23.083,14.104,0]},{"t":364,"s":[-27.934,-29.625,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.833],"y":[1,1,1]},"o":{"x":[0.8,0.8,0.167],"y":[0,0,0]},"t":304,"s":[100,100,100]},{"t":364,"s":[25,25,100]}],"ix":6,"l":2}},"ao":0,"ip":98,"op":11394,"st":-6,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":".blue400","cl":"blue400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.8],"y":[0]},"t":111,"s":[100]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.8],"y":[0]},"t":150,"s":[40]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":389,"s":[40]},{"t":419,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.8,"y":0},"t":98,"s":[0.5,0,0],"to":[18.333,0,0],"ti":[-18.333,0,0]},{"i":{"x":0.2,"y":0.2},"o":{"x":0.8,"y":0.8},"t":150,"s":[110.5,0,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.2,"y":1},"o":{"x":0.8,"y":0},"t":187,"s":[110.5,0,0],"to":[0,9.167,0],"ti":[0,-9.167,0]},{"i":{"x":0.2,"y":0.2},"o":{"x":0.8,"y":0.8},"t":227,"s":[110.5,55,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.2,"y":1},"o":{"x":0.8,"y":0},"t":304,"s":[110.5,55,0],"to":[-23.083,-14.083,0],"ti":[23.083,14.083,0]},{"t":364,"s":[-28,-29.5,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.833],"y":[1,1,1]},"o":{"x":[0.8,0.8,0.167],"y":[0,0,0]},"t":304,"s":[100,100,100]},{"t":364,"s":[25,25,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":1,"k":[{"i":{"x":[0.566,0.2],"y":[1,1]},"o":{"x":[0.8,0.8],"y":[0,0]},"t":98,"s":[84,84]},{"i":{"x":[0,0.2],"y":[1,1]},"o":{"x":[0,0.8],"y":[0,0]},"t":125,"s":[132,84]},{"t":150,"s":[84,84]}],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.8],"y":[0]},"t":98,"s":[42]},{"t":150,"s":[42]}],"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":0,"k":[0.4,0.61568627451,0.964705882353,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":98,"op":11377,"st":-23,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":".blue400","cl":"blue400","parent":7,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.8],"y":[0]},"t":122,"s":[0]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":156,"s":[20]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":389,"s":[20]},{"t":419,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.833],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.167],"y":[0,0,0]},"t":122,"s":[55,55,100]},{"t":156,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-33.137],[33.137,0],[0,33.137],[-33.137,0]],"o":[[0,33.137],[-33.137,0],[0,-33.137],[33.137,0]],"v":[[60,0],[0,60],[-60,0],[0,-60]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":98,"op":11394,"st":-6,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":".blue400","cl":"blue400","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.7,"y":0},"t":10,"s":[-83.125,-29.625,0],"to":[13.854,4.938,0],"ti":[-13.854,-4.938,0]},{"i":{"x":0.2,"y":0.2},"o":{"x":0.167,"y":0.167},"t":90,"s":[0,0,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.2,"y":1},"o":{"x":0.8,"y":0},"t":98,"s":[0,0,0],"to":[-18.333,0,0],"ti":[18.333,0,0]},{"i":{"x":0.2,"y":0.2},"o":{"x":0.8,"y":0.8},"t":150,"s":[-110,0,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.2,"y":1},"o":{"x":0.8,"y":0},"t":187,"s":[-110,0,0],"to":[0,9.167,0],"ti":[0,-9.167,0]},{"i":{"x":0.2,"y":0.2},"o":{"x":0.8,"y":0.8},"t":227,"s":[-110,55,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.2,"y":1},"o":{"x":0.8,"y":0},"t":304,"s":[-110,55,0],"to":[4.479,-14.104,0],"ti":[-4.479,14.104,0]},{"t":364,"s":[-83.125,-29.625,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.833],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.167],"y":[0,0,0]},"t":10,"s":[25,25,100]},{"i":{"x":[0.2,0.2,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":90,"s":[100,100,100]},{"i":{"x":[0.2,0.2,0.833],"y":[1,1,1]},"o":{"x":[0.8,0.8,0.167],"y":[0,0,0]},"t":304,"s":[100,100,100]},{"t":364,"s":[25,25,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-23.196],[23.196,0],[0,23.196],[-23.196,0]],"o":[[0,23.196],[-23.196,0],[0,-23.196],[23.196,0]],"v":[[42,0],[0,42],[-42,0],[0,-42]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":11091,"st":-309,"bm":0},{"ddd":0,"ind":11,"ty":4,"nm":".blue400","cl":"blue400","parent":10,"sr":1,"ks":{"o":{"a":0,"k":20,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.833],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.167],"y":[0,0,0]},"t":10,"s":[55,55,100]},{"i":{"x":[0.2,0.2,0.833],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.167],"y":[0,0,0]},"t":90,"s":[100,100,100]},{"i":{"x":[0.2,0.2,0.833],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.167],"y":[0,0,0]},"t":389,"s":[100,100,100]},{"t":419,"s":[55,55,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-33.137],[33.137,0],[0,33.137],[-33.137,0]],"o":[[0,33.137],[-33.137,0],[0,-33.137],[33.137,0]],"v":[[60,0],[0,60],[-60,0],[0,-60]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":11091,"st":-309,"bm":0},{"ddd":0,"ind":13,"ty":4,"nm":".grey800","cl":"grey800","parent":10,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":10,"s":[100]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":80,"s":[0]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.8],"y":[0]},"t":314,"s":[0]},{"t":364,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[332.5,289.443,0],"ix":2,"l":2},"a":{"a":0,"k":[206,192.736,0],"ix":1,"l":2},"s":{"a":0,"k":[400,400,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-8.311],[8.311,0],[0,8.311],[-8.311,0]],"o":[[0,8.311],[-8.311,0],[0,-8.311],[8.311,0]],"v":[[15.048,0],[0,15.048],[-15.048,0],[0,-15.048]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.235294118524,0.250980407,0.262745112181,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[233.73,169.585],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-8.311],[8.311,0],[0,8.311],[-8.311,0]],"o":[[0,8.311],[-8.311,0],[0,-8.311],[8.311,0]],"v":[[15.048,0],[0,15.048],[-15.048,0],[0,-15.048]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.235294118524,0.250980407,0.262745112181,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[178.27,169.585],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-8.311],[8.311,0],[0,8.311],[-8.311,0]],"o":[[0,8.311],[-8.311,0],[0,-8.311],[8.311,0]],"v":[[15.048,0],[0,15.048],[-15.048,0],[0,-15.048]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.235294118524,0.250980407,0.262745112181,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[122.809,169.585],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-8.311],[8.311,0],[0,8.311],[-8.311,0]],"o":[[0,8.311],[-8.311,0],[0,-8.311],[8.311,0]],"v":[[15.048,0],[0,15.048],[-15.048,0],[0,-15.048]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.235294118524,0.250980407,0.262745112181,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[289.191,169.585],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"tr","p":{"a":0,"k":[206,169.585],"ix":2},"a":{"a":0,"k":[206,169.585],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"ScreenContent_Grey801","np":4,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[6.179,0],[0,0],[0,6.179],[0,0],[-6.179,0],[0,0],[0,-6.179],[0,0]],"o":[[0,0],[-6.179,0],[0,0],[0,-6.179],[0,0],[6.179,0],[0,0],[0,6.179]],"v":[[87.005,13.608],[-87.005,13.608],[-98.239,2.373],[-98.239,-2.373],[-87.005,-13.608],[87.005,-13.608],[98.239,-2.373],[98.239,2.373]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.235294118524,0.250980407,0.262745112181,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tr","p":{"a":0,"k":[206,217.327],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"ScreenContent_Grey800","np":1,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":9706,"st":-1694,"bm":0},{"ddd":0,"ind":14,"ty":4,"nm":".grey600","cl":"grey600","parent":10,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":10,"s":[100]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":80,"s":[0]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.8],"y":[0]},"t":314,"s":[0]},{"t":364,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[332.5,23.679,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[400,400,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[9.588,0],[0,0],[0,9.59],[0,0],[0,0],[0,0],[-11.986,0],[0,0],[0,11.987],[0,0],[0,2.401],[0,0],[0,0]],"o":[[0,9.59],[0,0],[-9.588,0],[0,0],[0,0],[0,0],[0,11.987],[0,0],[11.986,0],[0,0],[2.401,0],[0,0],[0,0],[0,0]],"v":[[115.211,104.344],[97.822,121.736],[-102.169,121.736],[-119.559,104.344],[-119.559,-126.084],[-123.907,-126.084],[-123.907,104.344],[-102.169,126.084],[97.822,126.084],[119.56,104.344],[119.56,-108.688],[123.907,-113.036],[123.907,-126.084],[115.211,-126.084]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":9706,"st":-1694,"bm":0},{"ddd":0,"ind":15,"ty":4,"nm":".black","cl":"black","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[203.826,124.121,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-9.588,0],[0,0],[0,9.59],[0,0],[0,0],[0,0]],"o":[[0,0],[9.588,0],[0,0],[0,0],[0,0],[0,9.59]],"v":[[-99.996,123.91],[99.995,123.91],[117.385,106.518],[117.385,-123.91],[-117.385,-123.91],[-117.385,106.518]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":9706,"st":-1694,"bm":0},{"ddd":0,"ind":16,"ty":4,"nm":".black","cl":"black","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[206,150,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[15.291,0],[0,0],[0,15.652],[0,0],[-15.291,0],[0,0],[0,-15.652],[0,0]],"o":[[0,0],[-15.291,0],[0,0],[0,-15.652],[0,0],[15.185,0],[0,0],[0,15.544]],"v":[[178.179,150],[-178.179,150],[-206,121.522],[-206,-121.522],[-178.179,-150],[178.286,-150],[206,-121.522],[206,121.63]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":9706,"st":-1694,"bm":0}],"markers":[]} \ No newline at end of file diff --git a/res/values/strings.xml b/res/values/strings.xml index 7466b143c90..0494e0458fd 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -6577,6 +6577,9 @@ Cloned Apps Create a second instance of an app so that you can use two accounts at the same time. + + Apps that can be cloned. + %1$s cloned, %2$d available to clone Delete all App clones diff --git a/res/xml/accessibility_hearing_aids.xml b/res/xml/accessibility_hearing_aids.xml index d5d8df6c3b7..f5e65aef155 100644 --- a/res/xml/accessibility_hearing_aids.xml +++ b/res/xml/accessibility_hearing_aids.xml @@ -30,13 +30,12 @@ - - + settings:searchable="true" + settings:controller="com.android.settings.accessibility.HearingAidCompatibilityPreferenceController"/> { + removeAndCacheAllPreferences(); + }); return; } mSpinnerPreference.setVisible(true); mAppListPreferenceGroup.setVisible(true); mHandler.post(() -> { + removeAndCacheAllPreferences(); addAllPreferences(); }); } diff --git a/src/com/android/settings/fuelgauge/batteryusage/DataProcessor.java b/src/com/android/settings/fuelgauge/batteryusage/DataProcessor.java index 3b04f907cc6..b61b755404a 100644 --- a/src/com/android/settings/fuelgauge/batteryusage/DataProcessor.java +++ b/src/com/android/settings/fuelgauge/batteryusage/DataProcessor.java @@ -137,6 +137,16 @@ public final class DataProcessor { // Wrap and processed history map into easy-to-use format for UI rendering. final BatteryLevelData batteryLevelData = getLevelDataThroughProcessedHistoryMap(context, processedBatteryHistoryMap); + // Loads the current battery usage data from the battery stats service. + final Map currentBatteryHistoryMap = + getCurrentBatteryHistoryMapFromStatsService(context); + // Replaces the placeholder in processedBatteryHistoryMap. + for (Map.Entry> mapEntry + : processedBatteryHistoryMap.entrySet()) { + if (mapEntry.getValue().containsKey(CURRENT_TIME_BATTERY_HISTORY_PLACEHOLDER)) { + mapEntry.setValue(currentBatteryHistoryMap); + } + } return batteryLevelData == null ? null : getBatteryUsageMap( diff --git a/src/com/android/settings/network/CarrierConfigChangedReceiver.java b/src/com/android/settings/network/CarrierConfigChangedReceiver.java index ace1c75f28a..9092758866a 100644 --- a/src/com/android/settings/network/CarrierConfigChangedReceiver.java +++ b/src/com/android/settings/network/CarrierConfigChangedReceiver.java @@ -32,20 +32,9 @@ public class CarrierConfigChangedReceiver extends BroadcastReceiver { CarrierConfigManager.ACTION_CARRIER_CONFIG_CHANGED; private final CountDownLatch mLatch; - private final boolean mIsWaitingForValidSubId; - /** - * This is the CarrierConfigChanged receiver. If it receives the carrier config changed, then it - * call the CountDownLatch.countDown(). - * If the "isWaitingForValidSubId" is true, then the receiver skip the carrier config changed - * with the subId = -1. The receiver executes the countDown when the CarrierConfigChanged - * with valid subId. - * If the "isWaitingForValidSubId" is false, then the receiver executes the countDown when - * receiving any CarrierConfigChanged. - */ - public CarrierConfigChangedReceiver(CountDownLatch latch, boolean isWaitingForValidSubId) { + public CarrierConfigChangedReceiver(CountDownLatch latch) { mLatch = latch; - mIsWaitingForValidSubId = isWaitingForValidSubId; } public void registerOn(Context context) { @@ -65,8 +54,7 @@ public class CarrierConfigChangedReceiver extends BroadcastReceiver { } private void checkSubscriptionIndex(Intent intent) { - if (intent.hasExtra(CarrierConfigManager.EXTRA_SUBSCRIPTION_INDEX) - || !mIsWaitingForValidSubId) { + if (intent.hasExtra(CarrierConfigManager.EXTRA_SUBSCRIPTION_INDEX)) { int subId = intent.getIntExtra(CarrierConfigManager.EXTRA_SUBSCRIPTION_INDEX, -1); Log.i(TAG, "subId from config changed: " + subId); mLatch.countDown(); diff --git a/src/com/android/settings/network/UiccSlotUtil.java b/src/com/android/settings/network/UiccSlotUtil.java index 4c26995f377..95a0e4d5f2a 100644 --- a/src/com/android/settings/network/UiccSlotUtil.java +++ b/src/com/android/settings/network/UiccSlotUtil.java @@ -140,8 +140,7 @@ public class UiccSlotUtil { inactiveRemovableSlot, /*removable sim's port Id*/ TelephonyManager.DEFAULT_PORT_INDEX, excludedLogicalSlotIndex), - context, - /*isWaitingForValidSubId=*/ true); + context); } /** @@ -179,8 +178,7 @@ public class UiccSlotUtil { performSwitchToSlot(telMgr, prepareUiccSlotMappings(uiccSlotMappings, /*slot is not psim*/ false, physicalSlotId, port, excludedLogicalSlotIndex), - context, - /*isWaitingForValidSubId=*/ false); + context); } /** @@ -232,8 +230,7 @@ public class UiccSlotUtil { } private static void performSwitchToSlot(TelephonyManager telMgr, - Collection uiccSlotMappings, Context context, - boolean isWaitingForValidSubId) + Collection uiccSlotMappings, Context context) throws UiccSlotsException { CarrierConfigChangedReceiver receiver = null; long waitingTimeMillis = @@ -243,7 +240,7 @@ public class UiccSlotUtil { DEFAULT_WAIT_AFTER_SWITCH_TIMEOUT_MILLIS); try { CountDownLatch latch = new CountDownLatch(1); - receiver = new CarrierConfigChangedReceiver(latch, isWaitingForValidSubId); + receiver = new CarrierConfigChangedReceiver(latch); receiver.registerOn(context); telMgr.setSimSlotMapping(uiccSlotMappings); latch.await(waitingTimeMillis, TimeUnit.MILLISECONDS); diff --git a/src/com/android/settings/spa/app/appinfo/AppBatteryPreference.kt b/src/com/android/settings/spa/app/appinfo/AppBatteryPreference.kt index 2766dfef360..720422f6faf 100644 --- a/src/com/android/settings/spa/app/appinfo/AppBatteryPreference.kt +++ b/src/com/android/settings/spa/app/appinfo/AppBatteryPreference.kt @@ -126,6 +126,7 @@ private class AppBatteryPresenter(private val context: Context, private val app: this, Utils.formatPercentage(percentOfTotal, true), null, + false, ) } diff --git a/tests/robotests/src/com/android/settings/accessibility/AccessibilityHearingAidsFragmentTest.java b/tests/robotests/src/com/android/settings/accessibility/AccessibilityHearingAidsFragmentTest.java index 10cf4e13e75..e5e89501c0e 100644 --- a/tests/robotests/src/com/android/settings/accessibility/AccessibilityHearingAidsFragmentTest.java +++ b/tests/robotests/src/com/android/settings/accessibility/AccessibilityHearingAidsFragmentTest.java @@ -18,16 +18,23 @@ package com.android.settings.accessibility; import static com.google.common.truth.Truth.assertThat; +import static org.mockito.Mockito.doReturn; +import static org.mockito.Mockito.spy; +import static org.mockito.Mockito.when; + import android.content.Context; +import android.telephony.TelephonyManager; import androidx.test.core.app.ApplicationProvider; import com.android.settings.R; import com.android.settings.testutils.XmlTestUtils; +import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; +import org.mockito.Spy; import org.mockito.junit.MockitoJUnit; import org.mockito.junit.MockitoRule; import org.robolectric.RobolectricTestRunner; @@ -40,7 +47,16 @@ public class AccessibilityHearingAidsFragmentTest { @Rule public MockitoRule mMockitoRule = MockitoJUnit.rule(); + @Spy private final Context mContext = ApplicationProvider.getApplicationContext(); + private TelephonyManager mTelephonyManager; + + @Before + public void setUp() { + mTelephonyManager = spy(mContext.getSystemService(TelephonyManager.class)); + when(mContext.getSystemService(TelephonyManager.class)).thenReturn(mTelephonyManager); + doReturn(true).when(mTelephonyManager).isHearingAidCompatibilitySupported(); + } @Test public void getNonIndexableKeys_existInXmlLayout() { diff --git a/tests/robotests/src/com/android/settings/accessibility/HearingAidCompatibilityPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/accessibility/HearingAidCompatibilityPreferenceControllerTest.java new file mode 100644 index 00000000000..15bb38d1420 --- /dev/null +++ b/tests/robotests/src/com/android/settings/accessibility/HearingAidCompatibilityPreferenceControllerTest.java @@ -0,0 +1,130 @@ +/* + * Copyright (C) 2022 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.settings.accessibility; + +import static com.android.settings.accessibility.HearingAidCompatibilityPreferenceController.HAC_DISABLED; +import static com.android.settings.accessibility.HearingAidCompatibilityPreferenceController.HAC_ENABLED; +import static com.android.settings.core.BasePreferenceController.AVAILABLE; +import static com.android.settings.core.BasePreferenceController.UNSUPPORTED_ON_DEVICE; + +import static com.google.common.truth.Truth.assertThat; + +import static org.mockito.Mockito.doReturn; +import static org.mockito.Mockito.spy; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +import android.content.ContentResolver; +import android.content.Context; +import android.media.AudioManager; +import android.provider.Settings; +import android.telephony.TelephonyManager; + +import androidx.preference.SwitchPreference; +import androidx.test.core.app.ApplicationProvider; + +import org.junit.Before; +import org.junit.Rule; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mock; +import org.mockito.Spy; +import org.mockito.junit.MockitoJUnit; +import org.mockito.junit.MockitoRule; +import org.robolectric.RobolectricTestRunner; + +/** Tests for {@link HearingAidCompatibilityPreferenceControllerTest}. */ +@RunWith(RobolectricTestRunner.class) +public class HearingAidCompatibilityPreferenceControllerTest { + + @Rule + public MockitoRule mocks = MockitoJUnit.rule(); + @Spy + private final Context mContext = ApplicationProvider.getApplicationContext(); + @Mock + private ContentResolver mContentResolver; + + private TelephonyManager mTelephonyManager; + private AudioManager mAudioManager; + private final SwitchPreference mPreference = new SwitchPreference(mContext); + private HearingAidCompatibilityPreferenceController mController; + + @Before + public void setUp() { + mTelephonyManager = spy(mContext.getSystemService(TelephonyManager.class)); + mAudioManager = spy(mContext.getSystemService(AudioManager.class)); + when(mContext.getContentResolver()).thenReturn(mContentResolver); + when(mContext.getSystemService(TelephonyManager.class)).thenReturn(mTelephonyManager); + when(mContext.getSystemService(AudioManager.class)).thenReturn(mAudioManager); + mController = new HearingAidCompatibilityPreferenceController(mContext, + "hearing_aid_compatibility"); + } + + @Test + public void getAvailabilityStatus_HacSupported_shouldReturnAvailable() { + doReturn(true).when(mTelephonyManager).isHearingAidCompatibilitySupported(); + + assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE); + } + + @Test + public void getAvailabilityStatus_HacNotSupported_shouldReturnUnsupported() { + doReturn(false).when(mTelephonyManager).isHearingAidCompatibilitySupported(); + + assertThat(mController.getAvailabilityStatus()).isEqualTo(UNSUPPORTED_ON_DEVICE); + } + + + @Test + public void isChecked_enabledHac_shouldReturnTrue() { + Settings.System.putInt(mContext.getContentResolver(), Settings.System.HEARING_AID, + HAC_ENABLED); + mController.updateState(mPreference); + + assertThat(mController.isChecked()).isTrue(); + assertThat(mPreference.isChecked()).isTrue(); + } + + @Test + public void isChecked_disabledHac_shouldReturnFalse() { + Settings.System.putInt(mContext.getContentResolver(), Settings.System.HEARING_AID, + HAC_DISABLED); + mController.updateState(mPreference); + + assertThat(mController.isChecked()).isFalse(); + assertThat(mPreference.isChecked()).isFalse(); + } + + @Test + public void setChecked_enabled_shouldEnableHac() { + mController.setChecked(true); + + assertThat(Settings.System.getInt(mContext.getContentResolver(), + Settings.System.HEARING_AID, HAC_DISABLED)).isEqualTo(HAC_ENABLED); + verify(mAudioManager).setParameters("HACSetting=ON"); + } + + @Test + public void setChecked_disabled_shouldDisableHac() { + mController.setChecked(false); + + assertThat(Settings.System.getInt(mContext.getContentResolver(), + Settings.System.HEARING_AID, HAC_DISABLED)).isEqualTo(HAC_DISABLED); + verify(mAudioManager).setParameters("HACSetting=OFF"); + } + +} diff --git a/tests/spa_unit/src/com/android/settings/spa/app/appinfo/AppBatteryPreferenceTest.kt b/tests/spa_unit/src/com/android/settings/spa/app/appinfo/AppBatteryPreferenceTest.kt index 01113ccb279..fd286caf2d9 100644 --- a/tests/spa_unit/src/com/android/settings/spa/app/appinfo/AppBatteryPreferenceTest.kt +++ b/tests/spa_unit/src/com/android/settings/spa/app/appinfo/AppBatteryPreferenceTest.kt @@ -162,6 +162,7 @@ class AppBatteryPreferenceTest { batteryDiffEntry, "10%", null, + false, ) } } diff --git a/tests/unit/src/com/android/settings/regionalpreferences/NumberingPreferencesFragmentTest.java b/tests/unit/src/com/android/settings/regionalpreferences/NumberingPreferencesFragmentTest.java index eeb65f2ef2a..92cfb69b449 100644 --- a/tests/unit/src/com/android/settings/regionalpreferences/NumberingPreferencesFragmentTest.java +++ b/tests/unit/src/com/android/settings/regionalpreferences/NumberingPreferencesFragmentTest.java @@ -26,13 +26,9 @@ import android.os.Looper; import androidx.test.annotation.UiThreadTest; import androidx.test.core.app.ApplicationProvider; -import com.android.settings.testutils.ResourcesUtils; - import org.junit.Before; import org.junit.Test; -import java.util.Locale; - public class NumberingPreferencesFragmentTest { private Context mApplicationContext; private NumberingPreferencesFragment mFragment; @@ -47,37 +43,6 @@ public class NumberingPreferencesFragmentTest { mFragment = new NumberingPreferencesFragment(); } - @Test - @UiThreadTest - public void initTitle_optionIsLanguageSelection_titleIsNumbers() { - Bundle bundle = new Bundle(); - bundle.putString(RegionalPreferencesEntriesFragment.ARG_KEY_REGIONAL_PREFERENCE, - NumberingSystemItemController.ARG_VALUE_LANGUAGE_SELECT); - mFragment.setArguments(bundle); - - String result = mFragment.initTitle(); - - assertEquals(ResourcesUtils.getResourcesString( - mApplicationContext, "numbers_preferences_title"), result); - } - - @Test - @UiThreadTest - public void initTitle_optionIsNumberingSystemSelection_titleIsLocaleDisplayName() { - Locale expectedLocale = Locale.forLanguageTag("en-US"); - Bundle bundle = new Bundle(); - bundle.putString(RegionalPreferencesEntriesFragment.ARG_KEY_REGIONAL_PREFERENCE, - NumberingSystemItemController.ARG_VALUE_NUMBERING_SYSTEM_SELECT); - bundle.putString( - NumberingSystemItemController.KEY_SELECTED_LANGUAGE, - expectedLocale.toLanguageTag()); - mFragment.setArguments(bundle); - - String result = mFragment.initTitle(); - - assertEquals(expectedLocale.getDisplayName(expectedLocale), result); - } - @Test @UiThreadTest public void getMetricsCategory_optionIsLanguageSelection_resultIsLanguageSelection() {