Aller au contenu

Faire appels à des fonctions d'android (deverouillage ecran, installation/desinstallation appli)


boboh

Recommended Posts

Bonjour,

j'explique mon problème :

Je suis en train de développer un compteur de points sous android pour un jeu de carte à collectionner. L'appli peut compter les points de vie de chaque joueur par l'appui sur des boutons + ou -, bref rien de bien sorcier.

Cependant, une partie dure une heure. Pendant cette heure, l'écran s'éteint, normal. quand il se rallume, il faut le déverouiller, c'est chiant si on veut faire des modif au compteur...

J'aimerai savoir comment il fallait faire pour désactiver le deverouillage d'écran et laisser l'écran allumé ? Je cherche depuis ce matin, incapable de trouver...

2eme question :

Je ne compte pas publier mon appli sur l'android market, à cause des 25$ à dépenser pour l'ouverture du compte.

Mais j'aimerai tout de même prévoir un système de mise à jour automatique. J'explique : sur un nom de domaine, je met en ligne un fichier .txt avec ecrit à l'intérieur le numero de la derniere version. Si ce numéro est supérieur à celle de l'appli en cours, on desinstalle cette appli, on telecharge la nouvelle en ligne, et on l'installe. Pour ce qui est de récupérer le fichier txt et de le comparer avec le numero de la version en cours, je devrais me débrouiller. Cependant, comment ça se passe pour faire appel aux fonctions de desinstallation et installation de l'appli?

Merci d'avance, vous me sauveriez la vie si vous trouvez :)

Lien vers le commentaire
Partager sur d’autres sites

Salut

Pour ton premier problème, jette un oeil dans la doc ou sur Google en cherchant "Wake Locks". C'est le système qui permet d'empêcher l'écran de s'éteindre.

Pour ton second problème, si tu ne comptes modifier que du contenu sans toucher au code de ton appli, il n'est pas nécessaire de faire de mise à jour. A mon sens, le plus simple serait de créer une BDD sur ton serveur puis un web service pour y accéder depuis ton appli. Si tu souhaites tout de même maintenir ton système de fichier, alors télecharges (enfin ton appli...) ton fichier à chaque fois, lis le et stockes les information soit dans une BDD locale (SQLite) soit en passant par les content providers ;)

A plus ^^

Lien vers le commentaire
Partager sur d’autres sites

Merci beaucoup à toi pour ta réponse !

Pour le 2eme problème, il ne s'agit pas de mettre à jour une BDD, mais l'appli dans sa totalité, je veux juste savoir quels sont les fonctions qui permettent l'installation et la desinstallation d'une appli, grâce à ça, je saurai mettre à jour mon appli :)

merci encore :)

Lien vers le commentaire
Partager sur d’autres sites

Bon par contre, j'ai un problème avec le wavelock. Je me suis fié à ça : http://developer.android.com/reference/android/os/PowerManager.html

Comme ça marchait oas pour mon appli (forcer l'arret blabla), j'en ai fait une autre avec que cette fonction, ça donne ça :

Le code Java

package com.test.android.testlight;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.os.PowerManager;

public class TestlightActivity extends Activity  
{

private PowerManager.WakeLock wl;

@Override
protected void onCreate(Bundle savedInstanceState) {
 PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
 wl = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK, "TestlightActivity");
}

@Override
protected void onPause() {
 super.onPause();
 wl.release();
}

@Override
protected void onResume() {
 super.onResume();
 wl.acquire();
}
}

Le code XML :

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:orientation="vertical"
   android:layout_width="fill_parent"
   android:layout_height="fill_parent"
   >
<TextView  
   android:layout_width="fill_parent" 
   android:layout_height="wrap_content" 
   android:text="@string/hello"
   />
</LinearLayout>

Et j'ai bien rajouté la permission dans le manifest :

Le manifest :

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
     package="com.test.android.testlight"
     android:versionCode="1"
     android:versionName="1.0">
   <uses-sdk android:minSdkVersion="4" />

   <application android:icon="@drawable/icon" android:label="@string/app_name">
       <activity android:name=".TestlightActivity"
                 android:label="@string/app_name">
           <intent-filter>
               <action android:name="android.intent.action.MAIN" />
               <category android:name="android.intent.category.LAUNCHER" />
           </intent-filter>
       </activity>

   </application>


   <uses-permission android:name="android.permission.WAKE_LOCK" />
</manifest>

Pourtant, quand je lance l'appli, j'ai une erreur type "Fermeture soudaine, forcer l'arrêt" ... Je pensais que c'était au fait que l'appli était codé pour Android 1.6 (je prends une des plus basses versions android pour que ce soit compatible avec le plus d'appareil), mais la doc android dev dit que cette fonction est disponible depuis la version 1...

Au secours ^^ ..!

Lien vers le commentaire
Partager sur d’autres sites

Rien à voir avec les wake locks, il manque juste l'appel à la superclasse (super.onCreate(savedInstanceState)) :

 @Override 
protected void onCreate(Bundle savedInstanceState) { 
 super.onCreate(savedInstanceState);
 PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE); 
 wl = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK, "TestlightActivity"); 
} 

EDIT: D'ailleurs, il manque aussi la définition de la content view mais j'imagine qu'ici c'était juste pour tester les wake locks :)

Lien vers le commentaire
Partager sur d’autres sites

Ah et puis pour ce qui est de l'utilisation de la version 1.6 pour rendre ton appli compatible avec le max d'appareils, je ne pense pas que ce soit une bonne idée. Enfin, je veux dire, il vaut mieux se référer aux stats ( http://www.appbrain.com/stats/top-android-sdk-versions ) et se dire que pour la microscopique part de marché qui utilisent une vieille version (part qui se réduit quand même rapidement il faut le dire), il vaut mieux coder avec une version plus récente (avec quelques changements parfois sympathiques du SDK). Personellement, j'utilise >2. M'enfin c'est juste mon point de vue et je suis très loin d'être à l'abri de dire une connerie :D

A plus ^^

Lien vers le commentaire
Partager sur d’autres sites

C'est bon, ça marche merci beaucoup :)

Et merci pour le conseil je ne savais pas que les version android < 2.1 n'était vraiment plus très utilisés.

Pour ce qui est de la désinstallation / installation d'appli, d'après ce que j'ai lu sur des forums anglais, j'ai l'impression que ce n'est pas autorisé s'il n'y a pas d'interraction avec l'utilisateur, il faudrait que l'utilisateur tape un pin, je ne sais pas trop. Je continue à chercher, je partage si je trouve ;)

Lien vers le commentaire
Partager sur d’autres sites

Regarde ca pour l'installation :

http://android.amberfog.com/?p=98

Ca doit te lancer le programme d'installation. Donc ce que je ferais :

- Vérification de mise à jour

- Si positif, téléchargement du nouvel .apk dans un dossier temporaire

- Installation de cet .apk comme expliqué dans mon lien (en fait ca devrait préciser a l'user que ca remplace l'application en cours, attention, il faut que ce soit le même nom de package pour que ca marche)

- Suppression du .apk dans le dossier temporaire

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...