mirror of https://github.com/n1nj4sec/pupy.git
126 lines
4.1 KiB
Java
126 lines
4.1 KiB
Java
package org.renpy.android;
|
|
|
|
import android.app.Service;
|
|
import android.os.IBinder;
|
|
import android.os.Bundle;
|
|
import android.content.Intent;
|
|
import android.content.Context;
|
|
import android.util.Log;
|
|
import android.app.Notification;
|
|
import android.app.PendingIntent;
|
|
import android.os.Process;
|
|
|
|
public class PythonService extends Service implements Runnable {
|
|
|
|
// Thread for Python code
|
|
private Thread pythonThread = null;
|
|
|
|
// Python environment variables
|
|
private String androidPrivate;
|
|
private String androidArgument;
|
|
private String pythonHome;
|
|
private String pythonPath;
|
|
// Argument to pass to Python code,
|
|
private String pythonServiceArgument;
|
|
public static Service mService = null;
|
|
|
|
@Override
|
|
public IBinder onBind(Intent arg0) {
|
|
return null;
|
|
}
|
|
|
|
@Override
|
|
public void onCreate() {
|
|
super.onCreate();
|
|
}
|
|
|
|
@Override
|
|
public int onStartCommand(Intent intent, int flags, int startId) {
|
|
if (pythonThread != null) {
|
|
Log.v("python service", "service exists, do not start again");
|
|
return START_REDELIVER_INTENT;
|
|
}
|
|
|
|
Bundle extras = intent.getExtras();
|
|
androidPrivate = extras.getString("androidPrivate");
|
|
// service code is located in service subdir
|
|
androidArgument = extras.getString("androidArgument") + "/service";
|
|
pythonHome = extras.getString("pythonHome");
|
|
pythonPath = extras.getString("pythonPath");
|
|
pythonServiceArgument = extras.getString("pythonServiceArgument");
|
|
String serviceTitle = extras.getString("serviceTitle");
|
|
String serviceDescription = extras.getString("serviceDescription");
|
|
|
|
pythonThread = new Thread(this);
|
|
pythonThread.start();
|
|
|
|
Context context = getApplicationContext();
|
|
/*Notification notification = new Notification(context.getApplicationInfo().icon,
|
|
serviceTitle,
|
|
System.currentTimeMillis());*/
|
|
//Intent contextIntent = new Intent(context, PythonActivity.class);
|
|
//PendingIntent pIntent = PendingIntent.getActivity(context, 0, contextIntent,
|
|
// PendingIntent.FLAG_UPDATE_CURRENT);
|
|
//notification.setLatestEventInfo(context, serviceTitle, serviceDescription, pIntent);
|
|
//startForeground(1, notification);
|
|
|
|
return START_REDELIVER_INTENT;
|
|
}
|
|
|
|
@Override
|
|
public void onDestroy() {
|
|
super.onDestroy();
|
|
pythonThread = null;
|
|
Process.killProcess(Process.myPid());
|
|
}
|
|
|
|
@Override
|
|
public void run(){
|
|
|
|
// libraries loading, the same way PythonActivity.run() do
|
|
System.loadLibrary("sdl");
|
|
System.loadLibrary("sdl_image");
|
|
System.loadLibrary("sdl_ttf");
|
|
System.loadLibrary("sdl_mixer");
|
|
System.loadLibrary("python2.7");
|
|
System.loadLibrary("application");
|
|
System.loadLibrary("sdl_main");
|
|
|
|
|
|
System.load(getFilesDir() + "/lib/python2.7/lib-dynload/_io.so");
|
|
System.load(getFilesDir() + "/lib/python2.7/lib-dynload/unicodedata.so");
|
|
|
|
try {
|
|
System.loadLibrary("ctypes");
|
|
System.load(getFilesDir() + "/lib/python2.7/lib-dynload/_ctypes.so");
|
|
} catch(UnsatisfiedLinkError e) {
|
|
}
|
|
|
|
try {
|
|
System.loadLibrary("sqlite3");
|
|
System.load(getFilesDir() + "/lib/python2.7/lib-dynload/_sqlite3.so");
|
|
} catch(UnsatisfiedLinkError e) {
|
|
}
|
|
|
|
try {
|
|
System.load(getFilesDir() + "/lib/python2.7/lib-dynload/_imaging.so");
|
|
System.load(getFilesDir() + "/lib/python2.7/lib-dynload/_imagingft.so");
|
|
System.load(getFilesDir() + "/lib/python2.7/lib-dynload/_imagingmath.so");
|
|
} catch(UnsatisfiedLinkError e) {
|
|
}
|
|
|
|
this.mService = this;
|
|
nativeInitJavaEnv();
|
|
nativeStart(androidPrivate, androidArgument, pythonHome, pythonPath,
|
|
pythonServiceArgument);
|
|
}
|
|
|
|
// Native part
|
|
public static native void nativeStart(String androidPrivate, String androidArgument,
|
|
String pythonHome, String pythonPath,
|
|
String pythonServiceArgument);
|
|
|
|
public static native void nativeInitJavaEnv();
|
|
|
|
}
|