Наконец-то разобрался, как заставить это работать. Каким-то образом это работает для меня. 3D кубик Рубика отлично работает везде :). ОК .. Давай перейдем к делу ...
Большинство изменений, которые я сделал, находятся в файле "Kube.java". Класс Original Kube, используемый для расширения активности. Теперь это фактически расширяет сервис. Теперь это KubeService. Для этого нам нужно предоставить body для двух функций onBind () и onDistroy ().
public IBinder onBind(Intent intent)
{
return null;
}
public void onDestroy()
{
super.onDestroy();
if (mView != null)
{
((WindowManager)getSystemService("window")).removeView(mView);
mView = null;
}
Log.v(TAG, "service stopped.");
}
Откуда появилось окно? Где мы добавили наш вид в окно? Вот и вся хитрость в том, чтобы заставить ее работать ..
Нам нужно переписать метод onCreate (). Вот метод onCreate (), который работал для меня.
public void onCreate()
{
Log.v(TAG, "onCreate");
super.onCreate();
GLWorld myGLWorld = makeGLWorld();
mView = new GLSurfaceView(this);
mRenderer = new KubeRenderer(myGLWorld, this);
mView.setEGLConfigChooser(8, 8, 8, 8, 16, 0);
mView.setRenderer(this.mRenderer);
mView.getHolder().setFormat(PixelFormat.TRANSLUCENT); //many alpha bits
//mView.getHolder().setFormat(PixelFormat.TRANSPARENT); // at least 1 alpha bit
//mView.getHolder().setFormat(PixelFormat.RGBA_8888);
WindowManager localWM = (WindowManager)getBaseContext().getSystemService("window");
WindowManager.LayoutParams localLP = new WindowManager.LayoutParams(
WindowManager.LayoutParams.MATCH_PARENT,
WindowManager.LayoutParams.MATCH_PARENT,
WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY,
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE |
WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE,
PixelFormat.TRANSLUCENT);
localLP.setTitle("KubeService");
localWM.addView(mView, localLP);
Log.v(TAG, "service started.");
}
Помимо этих изменений, не забудьте добавить разрешение SYSTEM_ALERT_WINDOW и службу kube.KubeService, как показано ниже в файле манифеста.
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
<service android:enabled="true"
android:name=".kube.KubeService">
</service>
Теперь все настроено, и нам просто нужно создать намерение для KubeService и запустить службу.
Intent kubeIntent = new Intent().setClassName("PACKAGE_NAME", "PACKAGE_NAME.kube.KubeService");
И
startService(kubeIntent);
Надеюсь, это сработает и для вас, ребята. Комментарии приветствуются. Если у вас есть какие-либо приложения с трюком, опубликуйте их. Будет весело !!