application mobile

20
Application Mobile : Geo Gsm Description : GEOGSM est une application mobile pour le but de porter en aide le client de l’application GEOGPS pour mieux gérer les situations d’urgences de ces véhicules. Les principales fonctionnalités que doit comprendre l’application sont : - Récupérer l’état du relais - Démarrer ou arrêter le véhicule - Récupérer la position courante Modalisation : MPD : Nous avons ajouté quelques attribues n’apparaissent pas dans cette capture.

Upload: yassine-laabaqui

Post on 13-Sep-2015

23 views

Category:

Documents


1 download

DESCRIPTION

geogsm

TRANSCRIPT

Application Mobile: Geo GsmDescription :GEOGSM est une application mobile pour le but de porter en aide le client de lapplication GEOGPS pour mieux grer les situations durgences de ces vhicules. Les principales fonctionnalits que doit comprendre lapplication sont :-Rcuprer ltat du relais-Dmarrer ou arrter le vhicule-Rcuprer la position couranteModalisation:MPD:

Nous avons ajout quelques attribues napparaissent pas dans cette capture.

Maquettes: Accueil:

Authentification:

Commande:

Information:

Menu:

Livrable: Captures dcran:Accueil:

Authentification:

Commande:

Information:

Menu:

Exemple Code:Structure du projet (app mobile):

Code:

Layouts:

Exemple (Classe SmsReceiver): Reception SMS, Decortiqu SMS, Marqu SMS comme lut, Changer ltat d SMS.package info.es.geogsm.sms;

import info.es.geogsm.data.FluxCommandeDbHelper;import info.es.geogsm.data.MySQLiteOpenHelper.CommandeSmsColumns;import info.es.geogsm.models.FluxCommandeModel;import info.es.geogsm.models.Telephone;

import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Calendar;

import org.json.JSONException;import org.json.JSONObject;

import android.content.BroadcastReceiver;import android.content.ContentValues;import android.content.Context;import android.content.Intent;import android.database.Cursor;import android.net.Uri;import android.os.Bundle;import android.telephony.SmsMessage;import android.util.Log;

public class SmsReceiver extends BroadcastReceiver{

private String formatPuce(long puce) {String num = Long.toString(puce);if(num.length() >= 9)return num.substring(num.length()-9);elsereturn "";}

@Overridepublic void onReceive(Context context, Intent intent) {FluxCommandeDbHelper fluMAnager = new FluxCommandeDbHelper(context);//---get the SMS message passed in---Bundle bundle = intent.getExtras(); SmsMessage[] msgs = null;String str = "";Calendar c = Calendar.getInstance();SimpleDateFormat td = new SimpleDateFormat("yyyy-MM-dd");SimpleDateFormat tt = new SimpleDateFormat("HH:mm:ss");SimpleDateFormat tz = new SimpleDateFormat("yyyy-MM-dd HH:mm");String strDate ="";ArrayList TelephoneList = new ArrayList();Telephone tele;String num;String Message = "";String cmd = null;

FluxCommandeModel fluAux = null;JSONObject jsonReponse = new JSONObject();

if (bundle != null){//---retrieve the SMS message received---Object[] pdus = (Object[]) bundle.get("pdus");msgs = new SmsMessage[pdus.length]; for (int i=0; i9){num = num.substring(num.length()-9);str += " :";str += msgs[i].getMessageBody().toString();Message = msgs[i].getMessageBody().toString();str += "\n";}String []msgArray = Message.split(",");

if(msgArray.length > 1){try{java.util.Date datePosition = tz.parse(msgArray[0]);

cmd = CommandeSmsColumns.COMMANDE_TYPE_COORDS;

jsonReponse.put("date", msgArray[0]);for(int l=1 ; l-1 && fluAux2.getEtat().equalsIgnoreCase("Envoi")){cmd = cmd2;

}

try {jsonReponse.put("Status", "OK");} catch (JSONException e1) {// TODO Auto-generated catch blocke1.printStackTrace();}

}}

}

fluAux = fluMAnager.fetchRow(num,cmd);if( fluAux.getId()>-1){Long mssg = fluMAnager.updateRow(num, cmd, "Recu", jsonReponse.toString(), Message, td.format(c.getTime()), tt.format(c.getTime()));markMessageRead(context, msgs[i].getOriginatingAddress().toString(), msgs[i].getMessageBody().toString());}

}//---display the new SMS message---

}fluMAnager.close();}

private void markMessageRead(Context context, String number, String body) {

Uri uri = Uri.parse("content://sms/inbox");Cursor cursor = context.getContentResolver().query(uri, null, null, null, null);try{

while (cursor.moveToNext()) {if ((cursor.getString(cursor.getColumnIndex("address")).equals(number)) && (cursor.getInt(cursor.getColumnIndex("read")) == 0)) {if (cursor.getString(cursor.getColumnIndex("body")).startsWith(body)) {String SmsMessageId = cursor.getString(cursor.getColumnIndex("_id"));ContentValues values = new ContentValues();values.put("read", true);context.getContentResolver().update(Uri.parse("content://sms/inbox"), values, "_id=" + SmsMessageId, null);return;}}}}catch(Exception e){Log.e("Marquer Lu", "Erreur de lecture: "+e.toString());}}}

Exemple (Classe login web API):

public class LoginActivity extends Activity implements CallBackActivity{

// Values for Utilisateur and password at the time of the login attempt.private String mCompte;private String mUtilisateur;private String mPassword;

// UI references.private EditText mCompteView;private EditText mUtilisateurView;private EditText mPasswordView;

@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.login);

// Set up the login form.mCompteView = (EditText) findViewById(R.id.compte);mUtilisateurView = (EditText) findViewById(R.id.utilisateur);

mPasswordView = (EditText) findViewById(R.id.password);mPasswordView.setOnEditorActionListener(new TextView.OnEditorActionListener() {@Overridepublic boolean onEditorAction(TextView textView, int id,KeyEvent keyEvent) {if (id == R.id.password || id == EditorInfo.IME_NULL) {attemptLogin();return true;}return false;}});

findViewById(R.id.button1).setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {attemptLogin();}});findViewById(R.id.progressBar1).setVisibility(View.INVISIBLE); } public void attemptLogin() { findViewById(R.id.progressBar1).setVisibility(View.VISIBLE); findViewById(R.id.button1).setVisibility(View.INVISIBLE);AppConfigDbHelper appConfigs = new AppConfigDbHelper(getBaseContext());AppConfigModel publickey = appConfigs.fetchRow(AppConfigColumns.PUBLIC_API_KEY);if(publickey.getId() == -1){Toast.makeText(getApplicationContext(), "error public key not found", Toast.LENGTH_LONG).show();System.exit(0);} ApiCall apiCaller = new ApiCall("authentication",this); BasicNameValuePair publicKey = new BasicNameValuePair("X-API-KEY", publickey.getValue()); BasicNameValuePair compte = new BasicNameValuePair("compte", mCompteView.getText().toString()); BasicNameValuePair utilisateur = new BasicNameValuePair("utilisateur", mUtilisateurView.getText().toString()); BasicNameValuePair mdp = new BasicNameValuePair("pass", mPasswordView.getText().toString()); apiCaller.execute(publicKey,compte,utilisateur,mdp); appConfigs.close();}

public void APIResultReceived(APIResult apiResult) {

findViewById(R.id.button1).setVisibility(View.VISIBLE);findViewById(R.id.progressBar1).setVisibility(View.INVISIBLE);

if(apiResult.Status.equalsIgnoreCase("OK")){AppConfigDbHelper appConfigs = new AppConfigDbHelper(getBaseContext());long privatekeyId = appConfigs.insertRow(AppConfigColumns.PRIVATE_API_KEY, apiResult.Value.toString());appConfigs.close();ALLDATA.privateApiKey = apiResult.Value.toString();startActivity(new Intent(getApplicationContext(), MainActivity.class));finish();overridePendingTransition(android.R.anim.slide_in_left, android.R.anim.slide_out_right);

}else{Toast.makeText(getApplicationContext(), apiResult.Message, Toast.LENGTH_LONG).show();}} }

Conclusion: Lapplication oprationnelle. Livr le 15/06/2015.

Application web: Geo Gps

Description :Suite au CDC la solution va nous permettre de grer, go-localiser et superviser les flottes de nos clients.Pour la version 0 du projet elle va tre limite sur les fonctionnalits suivantes: La cartographie: La carte (google maps) affiche lensemble des vhicules sur la map. La liste de vhicule. Gestion des rapports qui rsument les informations utiles et pratique dun parcours donnes (priode et vhicule). Gestion des graphes de consommation de carburant.La gestion des alertes sera programme dans la prochaine version.

Spcification technique:

Type Application SAASType Serveur V0 UNIXB.O: Serveur Unix Traccar: est un systme Open Source permettant de suivre des traceurs GPS. Il est compatible avec les serveurs sous les systmes d'exploitation Windows, Mac OS X et Linux. Les avantages de Traccar : gratuit, simple utiliser, pas de limite quant au nombre de traceurs enregistrables, possibilit de configurer diffrents types de compte (administrateur/utilisateur). Java Base de donnes MySQL: Traccare.sql

F.O

Technologies : angularJs ou autre (reactJs), PHP CodeIgniter Web API, MySQL, Bootstrap, Systeme UNIX, UML.

Vision :- Application geste flotte pour location.

Modlisation :MPD:

Maquettes :En cours