Aller au contenu

[TUTO] Améliorer son autonomie en supprimant le wakelock de Stockage Multimédia


Recommended Posts

Améliorer son autonomie en supprimant le wakelock de Stockage Multimédia

 
 
Salut à tous ! :)
 
Vous êtes nombreux à vous plaindre d'une consommation excessive de "stockage multimédia", vidant ainsi votre batterie à une vitesse record; c'est en effet un problème récurrent mais il est facile d'y remédier à condition d'être root et d'avoir une ROM deodex, voilà pourquoi j'ai décidé d'ouvrir ce topic.
 
Tout d'abord, quest-ce qu'un "wakelock" ?
C'est bien simple, un wakelock est lorsqu'un programme tourne en tâche de fond et maintient votre téléphone en éveil alors que vous ne vous en servez pas. Cela empêche donc l'appareil de passer en mode "deepsleep" (= sommeil profond) et accélère le drainage de la batterie.
 
Comment l'identifier ?
Un wakelock peut être causé par n'importe quelle application. Lorsque cela arrive, votre téléphone consomme énormément (et chauffe) alors que vous ne vous en servez pas. Afin de s'assurer que cela vient bien d'un wakelock il suffit d'aller dans vos stats de batterie, et de cliquer sur le graphique, la barre "éveil" devrait être pleine, comme sur le screenshot ci-dessous :
mini_79759520130905092147.png
(Cliquer sur l'image pour agrandir)
 
 
Ensuite pour identifier l'application qui en est la cause, il suffit en général de regarder dans les stats l'application en tête de liste. 
mini_97046420130905092151.png
(Cliquer sur l'image pour agrandir)
 
Mais ce n'est pas toujours le cas, en effet le résultat est flagrant sur mon screenshot car mon téléphone venait d'être allumé et que je n'avais rien fait d'autre, mais ces stats ne sont pas toujours très précises. Il faudra alors utiliser une application comme BatteryStatsPlus, aller dans l'onglet Wake Usage. Il vous indiquera alors précisément quelles applications tiennent votre téléphone en éveil, et combien de temps.
mini_58807420130905092235.png
(Cliquer sur l'image pour agrandir)
 
 
Et enfin, comment y remédier ? 
Une fois que vous avez clairement identifié la source du problème, c'est tout simple, il vous suffit de flasher un certain zip en recovery, et vous ne serez plus agacé par la consommation excessive de "stockage multimédia" ;)
Pour rappel, vous devez préalablement être root, avoir un recovery custom et une ROM deodex, puis :
- téléphone éteint, maintenir les touches Home + Volume Haut + Power
- sélectionner l'option Wipe cache partition
- aller dans Advanced, puis sélectionner Wipe dalvik cache
- revenir au menu précédent, et sélectionner Install zip from sdcard
- sélectionner le zip préalablement placé sur votre téléphone/carte SD, et confirmer l'opération.
 
Téléchargements :
Chaque zip est spécifique à un firmware, pour vérifier quel firmware vous avez, tapez *#1234# dans le clavier téléphonique
- Pour 4.2.2 :
I9300XXUFME7
I9300XXUFME3
 
- Pour 4.1.2 :
I9300XXEMD3
I9300XXEME2
I9300XXEMF1
I9300XXEMF6
I9300XXEMG6
 
Si vous ne trouvez pas le zip correspondant à votre firmware, vous pouvez me le demander, je m'en occuperais, à condition que vous m'envoyiez votre fichier /system/framework/framework.jar ;) 
 
Ou bien vous pouvez aussi le créer vous-mêmes :
1) Extrayez le fichier Framework.jar de votre téléphone et placez le sur votre ordinateur.
2) Téléchargez ApkTool, décompresser l'archive où vous voulez (vous devz avoir le SDK Android sur votre ordinateur)
3) Ouvrez-le avec WinRAR et extrayez le fichier classes.dex dans le dossier d'ApkTool.
4) Faites glisser le fichier classes.dex sur Quick-Baksmali et patientez, un dossier classout sera alors créé.
5) Cherchez le fichier .../classout/android/media/MediaScanner.smali, et ouvrez-le avec un éditeur de texte (Notepad++ est conseillé)
6) Trouvez la ligne

.method makeEntryFor(Ljava/lang/String;)Landroid/media/MediaScanner$FileEntry;

et remplacez le tout (jusqu'à .end method) par ceci :

.method makeEntryFor(Ljava/lang/String;)Landroid/media/MediaScanner$FileEntry;
.locals 14
.parameter "path"

.prologue
.line 1470
const/4 v12, 0x0

.line 1472
.local v12, c:Landroid/database/Cursor;
:try_start_0
const-string v0, "_"

invoke-virtual {p1, v0}, Ljava/lang/String;->contains(Ljava/lang/CharSequence;)Z

move-result v0

if-nez v0, :cond_0

const-string v0, "%"

invoke-virtual {p1, v0}, Ljava/lang/String;->contains(Ljava/lang/CharSequence;)Z

move-result v0

if-eqz v0, :cond_4

:cond_0
const/4 v13, 0x1

.line 1474
.local v13, hasWildCards:Z
:goto_0
if-nez v13, :cond_1

iget-boolean v0, p0, Landroid/media/MediaScanner;->mCaseInsensitivePaths:Z

if-nez v0, :cond_5

.line 1479
:cond_1
const-string v3, "_data=?"

.line 1480
.local v3, where:Ljava/lang/String;
const/4 v0, 0x1

new-array v4, v0, [Ljava/lang/String;

const/4 v0, 0x0

aput-object p1, v4, v0

.line 1487
.local v4, selectionArgs:[Ljava/lang/String;
:goto_1
iget-object v0, p0, Landroid/media/MediaScanner;->mMediaProvider:Landroid/content/IContentProvider;

iget-object v1, p0, Landroid/media/MediaScanner;->mFilesUri:Landroid/net/Uri;

sget-object v2, Landroid/media/MediaScanner;->FILES_PRESCAN_PROJECTION:[Ljava/lang/String;

const/4 v5, 0x0

const/4 v6, 0x0

invoke-interface/range {v0 .. v6}, Landroid/content/IContentProvider;->query(Landroid/net/Uri;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Landroid/os/ICancellationSignal;)Landroid/database/Cursor;

move-result-object v12

.line 1489
invoke-interface {v12}, Landroid/database/Cursor;->moveToFirst()Z

move-result v0

if-nez v0, :cond_2

if-eqz v13, :cond_2

iget-boolean v0, p0, Landroid/media/MediaScanner;->mCaseInsensitivePaths:Z

if-eqz v0, :cond_2

.line 1494
const-string v3, "_data LIKE ?1 AND lower(_data)=lower(?1)"

.line 1495
const/4 v0, 0x1

new-array v4, v0, [Ljava/lang/String;

.end local v4 #selectionArgs:[Ljava/lang/String;
const/4 v0, 0x0

aput-object p1, v4, v0

.line 1496
.restart local v4 #selectionArgs:[Ljava/lang/String;
invoke-interface {v12}, Landroid/database/Cursor;->close()V

.line 1497
iget-object v0, p0, Landroid/media/MediaScanner;->mMediaProvider:Landroid/content/IContentProvider;

iget-object v1, p0, Landroid/media/MediaScanner;->mFilesUri:Landroid/net/Uri;

sget-object v2, Landroid/media/MediaScanner;->FILES_PRESCAN_PROJECTION:[Ljava/lang/String;

const/4 v5, 0x0

const/4 v6, 0x0

invoke-interface/range {v0 .. v6}, Landroid/content/IContentProvider;->query(Landroid/net/Uri;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Landroid/os/ICancellationSignal;)Landroid/database/Cursor;

move-result-object v12

.line 1502
:cond_2
invoke-interface {v12}, Landroid/database/Cursor;->moveToFirst()Z

move-result v0

if-eqz v0, :cond_8

.line 1503
const/4 v0, 0x0

invoke-interface {v12, v0}, Landroid/database/Cursor;->getLong(I)J

move-result-wide v6

.line 1504
.local v6, rowId:J
const/4 v0, 0x2

invoke-interface {v12, v0}, Landroid/database/Cursor;->getInt(I)I

move-result v11

.line 1505
.local v11, format:I
const/4 v0, 0x3

invoke-interface {v12, v0}, Landroid/database/Cursor;->getLong(I)J

move-result-wide v9

.line 1506
.local v9, lastModified:J
new-instance v5, Landroid/media/MediaScanner$FileEntry;

move-object v8, p1

invoke-direct/range {v5 .. v11}, Landroid/media/MediaScanner$FileEntry;-><init>(JLjava/lang/String;JI)V
:try_end_0
.catchall {:try_start_0 .. :try_end_0} :catchall_0
.catch Landroid/os/RemoteException; {:try_start_0 .. :try_end_0} :catch_0

.line 1510
if-eqz v12, :cond_3

.line 1511
invoke-interface {v12}, Landroid/database/Cursor;->close()V

.line 1514
.end local v3 #where:Ljava/lang/String;
.end local v4 #selectionArgs:[Ljava/lang/String;
.end local v6 #rowId:J
.end local v9 #lastModified:J
.end local v11 #format:I
.end local v13 #hasWildCards:Z
:cond_3
:goto_2
return-object v5

.line 1472
:cond_4
const/4 v13, 0x0

goto :goto_0

.line 1484
.restart local v13 #hasWildCards:Z
:cond_5
:try_start_1
const-string v3, "_data LIKE ?1 AND lower(_data)=lower(?1)"

.line 1485
.restart local v3 #where:Ljava/lang/String;
const/4 v0, 0x1

new-array v4, v0, [Ljava/lang/String;

const/4 v0, 0x0

aput-object p1, v4, v0
:try_end_1
.catchall {:try_start_1 .. :try_end_1} :catchall_0
.catch Landroid/os/RemoteException; {:try_start_1 .. :try_end_1} :catch_0

.restart local v4 #selectionArgs:[Ljava/lang/String;
goto :goto_1

.line 1510
.end local v3 #where:Ljava/lang/String;
.end local v4 #selectionArgs:[Ljava/lang/String;
.end local v13 #hasWildCards:Z
:catchall_0
move-exception v0

if-eqz v12, :cond_6

.line 1511
invoke-interface {v12}, Landroid/database/Cursor;->close()V

.line 1510
:cond_6
throw v0

.line 1508
:catch_0
move-exception v0

.line 1510
if-eqz v12, :cond_7

.line 1511
:goto_3
invoke-interface {v12}, Landroid/database/Cursor;->close()V

.line 1514
:cond_7
const/4 v5, 0x0

goto :goto_2

.line 1510
.restart local v3 #where:Ljava/lang/String;
.restart local v4 #selectionArgs:[Ljava/lang/String;
.restart local v13 #hasWildCards:Z
:cond_8
if-eqz v12, :cond_7

goto :goto_3
.end method

7) Enregistrer les modifications, et faites glisser le dossier classout sur Quick-Smali.

8) Vous avez maintenant un fichier new-classes.dex. Renommez-le en classes.dex et replacez-le dans framework.jar à l'aide de WinRAR.

9) Téléchargez un des zips déjà préparés, et remplacez fichier /system/framework/framework.jar par le framework.jar que vous avez modifié.

 

 

 

 

Remarque :
Les zip proposés sont là uniquement pour régler le wakelock de "Stockage multimédia", si le wakelock provient d'une autre application, il vous suffira de la désinstaller ;)
 
 
 
Merci à Noskovj de XDA pour la création des zip

Modifié par Ster97
Lien vers le commentaire
Partager sur d’autres sites

  • 2 weeks later...

Il n'y a pas de zip pour ton firmware, mais je vais t'en préparer un. Va dans /system/app et copie Framework-res.apk puis envoie-le moi stp (en l'hébergeant par exemple sur Mediafire), ça m'évitera de devoir télécharger toute la ROM ^_^

Envoyé depuis mon GT-I9300 avec Tapatalk
 

Modifié par Ster97
Lien vers le commentaire
Partager sur d’autres sites

Hmmm je n'ai pas trouvé de fichier s'appelant "framework-res.apk" avec ESexplorer (explorer root donc ayant accès à tous les fichiers non?) mais j'ai trouvé un fichier se rapprochant de ça dans le dossier 

https://www.dropbox.com/s/sh7uwqts02po9so/GoogleServicesFramework.apk

Lien vers le commentaire
Partager sur d’autres sites

Désolé, je ne sais pas trop comment deodexer le framewok, et je ne voudrais pas faire de bêtises. En revanche si tu passes sur une version deodexée de ta ROM j'ai préparé ce zip qui conviendra.

 

Et excuse moi du retard, je n'ai pas beaucoup de temps du mercredi au vendredi.

Modifié par Ster97
Lien vers le commentaire
Partager sur d’autres sites

Rejoignez la conversation

Vous pouvez poster maintenant et vous enregistrez plus tard. Si vous avez un compte, connectez-vous maintenant pour poster.

Invité
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • Créer...