Waiting for proper screen orientation in a proper way

This commit is contained in:
pelya
2012-11-01 19:35:01 +02:00
parent faba23c35a
commit e450bfcf20

View File

@@ -71,6 +71,7 @@ import android.os.Handler;
import android.os.Message; import android.os.Message;
import java.util.concurrent.Semaphore; import java.util.concurrent.Semaphore;
import android.content.pm.ActivityInfo; import android.content.pm.ActivityInfo;
import android.view.Display;
public class MainActivity extends Activity public class MainActivity extends Activity
{ {
@@ -236,10 +237,49 @@ public class MainActivity extends Activity
} }
public void initSDL() public void initSDL()
{
(new Thread(new Runnable()
{
public void run()
{
//int tries = 30;
while( isCurrentOrientationHorizontal() != Globals.HorizontalOrientation )
{
System.out.println("libSDL: Waiting for screen orientation to change - the device is probably in the lockscreen mode");
try {
Thread.sleep(500);
} catch( Exception e ) {}
/*
tries--;
if( tries <= 0 )
{
System.out.println("libSDL: Giving up waiting for screen orientation change");
break;
}
*/
if( _isPaused )
{
System.out.println("libSDL: Application paused, cancelling SDL initialization until it will be brought to foreground");
return;
}
}
runOnUiThread(new Runnable()
{
public void run()
{
initSDLInternal();
}
});
}
})).start();
}
private void initSDLInternal()
{ {
if(sdlInited) if(sdlInited)
return; return;
System.out.println("libSDL: Initializing video and SDL application"); System.out.println("libSDL: Initializing video and SDL application");
sdlInited = true; sdlInited = true;
if(Globals.UseAccelerometerAsArrowKeys || Globals.AppUsesAccelerometer) if(Globals.UseAccelerometerAsArrowKeys || Globals.AppUsesAccelerometer)
getWindow().setFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON, getWindow().setFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON,
@@ -304,25 +344,6 @@ public class MainActivity extends Activity
if( downloader.DownloadComplete ) if( downloader.DownloadComplete )
{ {
initSDL(); initSDL();
/*
// This code does not work
(new Thread(new Runnable()
{
public void run()
{
try {
Thread.sleep(300); // Allow some time for Os to change screen orientation
} catch(Exception e) {}
runOnUiThread(new Runnable()
{
public void run()
{
initSDL();
}
});
}
})).start();
*/
} }
} }
} }
@@ -936,6 +957,12 @@ public class MainActivity extends Activity
return 0; return 0;
} }
public boolean isCurrentOrientationHorizontal()
{
Display getOrient = getWindowManager().getDefaultDisplay();
return getOrient.getWidth() >= getOrient.getHeight();
}
public FrameLayout getVideoLayout() { return _videoLayout; } public FrameLayout getVideoLayout() { return _videoLayout; }
static int NOTIFY_ID = 12367098; // Random ID static int NOTIFY_ID = 12367098; // Random ID