Bonjour,
Le but de ce mini-programme est d’imprimer un fichier sur l’imprimante intégrée au smartphone.
J’ai donc réussi tant bien que mal à modifier le seul exemple de code java en ma possession, pour arriver à faire ce dont j’ai besoin.
Le principe c’est qu’une application A (Écrite en Windev Mobile) génère un fichier texte puis lance l’application B (écrite en java avec Eclipse)
Pour le moment, quant l’application B prend le focus, un bouton apparait.
Quand je clic dessus l’impression se fait et l’Activity est fermée rendant la main à l’application A.
Le process “manuel” fonctionne .
Maintenant j’aimerais ne plus à avoir à cliquer sur ce bouton… et là je sèche lamentablement
J’ai testé l’appel à PrintData()
- après init(); dans le onCreate : rien ne s’imprime, pourtant le fichier à imprimer est bien supprimé et je rend bien la main à l’application A.
- dans onStart : Arrêt brutal de l’application et message : “V5Print” s’est arrêté.
Mes connaissances en java sont plus que limitées…
Merci d’avance à ceux / celles qui m’apporteront leur aide
package com.citaq.v5print;
import android.app.Activity;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.ServiceConnection;
import android.os.Bundle;
import android.os.Environment;
import android.os.IBinder;
import android.os.RemoteException;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import woyou.aidlservice.jiuiv5.ICallback;
import woyou.aidlservice.jiuiv5.IWoyouService;
//----- start of Activity
public class MainActivity extends Activity {
Button bt_printFile;
String sDataFile;
String ligne;
String ReadBuffer = "";
protected static final String TAG = "V5Print";
IWoyouService woyouService;
//------------------------------------------------------------------------- onPause
@Override
protected void onPause() {
super.onStop();
}
//------------------------------------------------------------------------- onCreate
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Intent intent = new Intent();
intent.setPackage("woyou.aidlservice.jiuiv5");
intent.setAction("woyou.aidlservice.jiuiv5.IWoyouService");
startService(intent);
bindService(intent, connService, Context.BIND_AUTO_CREATE);
init();
//Log.d(TAG, "Exécution de PrintData()");
//PrintData(); //fichier echange.txt supprimé mais pas d'impression
}
//------------------------------------------------------------------------- onStart
// Arret brutal de l'application et message : "V5Print" s'est arrêté.
//-------------------------------------------------------------------------
//@Override
//protected void onStart() {
// PrintData();
//}
//-------------------------------------------------------------------------Impression
private void PrintData() {
File sdLien = Environment.getExternalStorageDirectory();
File monFichier = new File(sdLien + "/echange.txt");
if ( monFichier.exists()) {
Log.d(TAG, "Fichier d'échange présent.");
try {
//----- Lecture du fichier d'échange
BufferedReader fichier = new BufferedReader(new FileReader(monFichier));
while ((ligne = fichier.readLine()) != null) {
ReadBuffer = ReadBuffer + ligne + "n";
}
//----- Fermeture et suppression du fichier d'échange
fichier.close();
monFichier.delete();
} catch (Exception e) {
e.printStackTrace();
}
if (ReadBuffer != "") {
//-----Impression
Log.d(TAG, "Impression en cours..." + "n" + ReadBuffer);
try {
woyouService.printText(ReadBuffer + "n", callback);
//----- Bye Bye...
// System.exit(0); // Très déconseillé (je ne sais pas pourquoi)
// android.os.Process.killProcess(android.os.Process.myPid());
finish();
} catch (RemoteException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
} // End if
else
{
Log.d(TAG, "Fichier vide !");
//----- Bye Bye...
// System.exit(0); // Très déconseillé (je ne sais pas pourquoi)
// android.os.Process.killProcess(android.os.Process.myPid());
finish();
}
} // End if
//----- Bye Bye...
// System.exit(0); // Très déconseillé (je ne sais pas pourquoi)
// android.os.Process.killProcess(android.os.Process.myPid());
finish();
}
//------------------------------------------------------------------------- Initialisation
private void init(){
//--------------------------------------------------------------------- Bouton printFile
bt_printFile = (Button) findViewById(R.id.bt_PrintFile);
bt_printFile.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
PrintData();
} // End onClick
}); // End bt_printFile.setOnClickListener
} // end of init()
//-------------------------------------------------------------------------
private ServiceConnection connService = new ServiceConnection() {
@Override
public void onServiceDisconnected(ComponentName name) {
woyouService = null;
}
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
woyouService = IWoyouService.Stub.asInterface(service);
try {
woyouService.printerInit(callback);
} catch (RemoteException e) {
Log.d(TAG, "registerCallback failed.");
}
}
}; // End connService
//-------------------------------------------------------------------------
private ICallback callback = new ICallback.Stub() {
@Override
public void onRunResult(boolean isSuccess) throws RemoteException {
Log.d(TAG, "ICallback--->" + isSuccess);
}
@Override
public void onReturnString(String result) throws RemoteException {
Log.d(TAG, "ICallback--->" + result);
}
@Override
public void onRaiseException(int code, String msg) throws RemoteException {
Log.d(TAG, "onRaiseException--->" + msg);
}
}; // End callback
} // End Activity