protected override void onCreate(android.os.Bundle savedInstanceState) { // https://sites.google.com/a/jsc-solutions.net/work/knowledge-base/15-dualvr/20160102/x360videos // https://sites.google.com/a/jsc-solutions.net/work/knowledge-base/15-dualvr/20151006 base.onCreate(savedInstanceState); nativeOnCreate(this); //setCurrentLanguage(Locale.getDefault().getLanguage()); // Create the SoundPool soundPool = new SoundPool(3 /* voices */, AudioManager.STREAM_MUSIC, 100); soundPoolSoundIds = new java.util.ArrayList <int>(); soundPoolSoundNames = new java.util.ArrayList <string>(); AudioManager audioMgr; audioMgr = (AudioManager)getSystemService(Context.AUDIO_SERVICE); var rate = audioMgr.getProperty(AudioManager.PROPERTY_OUTPUT_SAMPLE_RATE); var size = audioMgr.getProperty(AudioManager.PROPERTY_OUTPUT_FRAMES_PER_BUFFER); System.Console.WriteLine("rate = " + rate); System.Console.WriteLine("size = " + size); // Check preferences SharedPreferences prefs = getApplicationContext().getSharedPreferences("oculusvr", MODE_PRIVATE); var username = prefs.getString("username", "guest"); System.Console.WriteLine("username = "******"action:" + intent.getAction()); System.Console.WriteLine("type:" + intent.getType()); System.Console.WriteLine("fromPackageName:" + fromPackageNameString); System.Console.WriteLine("command:" + commandString); System.Console.WriteLine("uri:" + uriString); SurfaceView sv = new SurfaceView(this); setContentView(sv); #region xCallback // X:\jsc.svn\examples\java\android\synergy\OVRVrCubeWorldSurfaceView\OVRVrCubeWorldSurfaceView\ApplicationActivity.cs var xCallback = new xCallback { onsurfaceCreated = holder => { if (appPtr == 0) { return; } nativeSurfaceCreated(appPtr, holder.getSurface()); mSurfaceHolder = holder; }, onsurfaceChanged = (SurfaceHolder holder, int format, int width, int height) => { if (appPtr == 0) { return; } nativeSurfaceChanged(appPtr, holder.getSurface()); mSurfaceHolder = holder; }, onsurfaceDestroyed = holder => { if (appPtr == 0) { return; } nativeSurfaceDestroyed(appPtr); mSurfaceHolder = holder; } }; #endregion sv.getHolder().addCallback(xCallback); // Force the screen to stay on, rather than letting it dim and shut off // while the user is watching a movie. //getWindow().addFlags( WindowManager_LayoutParams.FLAG_KEEP_SCREEN_ON ); //// Force screen brightness to stay at maximum //WindowManager.LayoutParams params = getWindow().getAttributes(); //params.screenBrightness = 1.0f; //getWindow().setAttributes( params ); this.ondispatchTouchEvent += (e) => { int action = e.getAction(); float x = e.getRawX(); float y = e.getRawY(); Log.d(TAG, "onTouch dev:" + e.getDeviceId() + " act:" + action + " ind:" + e.getActionIndex() + " @ " + x + "," + y); nativeTouch(appPtr, action, x, y); return(true); }; this.ondispatchKeyEvent = (e) => { bool down; int keyCode = e.getKeyCode(); int deviceId = e.getDeviceId(); if (e.getAction() == KeyEvent.ACTION_DOWN) { down = true; } else if (e.getAction() == KeyEvent.ACTION_UP) { down = false; } else { Log.d(TAG, "source " + e.getSource() + " action " + e.getAction() + " keyCode " + keyCode); return(base.dispatchKeyEvent(e)); } Log.d(TAG, "source " + e.getSource() + " keyCode " + keyCode + " down " + down + " repeatCount " + e.getRepeatCount()); if (keyCode == KeyEvent.KEYCODE_VOLUME_UP) { if (down) { adjustVolume(1); } return(true); } if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN) { if (down) { adjustVolume(-1); } return(true); } // Joypads will register as keyboards, but keyboards won't // register as position classes // || event.getSource() != 16777232) // Volume buttons are source 257 if (e.getSource() == 1281) { // do we have one we can test with? //keyCode |= JoyEvent.BUTTON_JOYPAD_FLAG; } return(buttonEvent(deviceId, keyCode, down, e.getRepeatCount())); }; }
protected override void onCreate(android.os.Bundle savedInstanceState) { // https://sites.google.com/a/jsc-solutions.net/work/knowledge-base/15-dualvr/20160102/x360videos // https://sites.google.com/a/jsc-solutions.net/work/knowledge-base/15-dualvr/20151006 base.onCreate(savedInstanceState); nativeOnCreate(this); //setCurrentLanguage(Locale.getDefault().getLanguage()); // Create the SoundPool soundPool = new SoundPool(3 /* voices */, AudioManager.STREAM_MUSIC, 100); soundPoolSoundIds = new java.util.ArrayList<int>(); soundPoolSoundNames = new java.util.ArrayList<string>(); AudioManager audioMgr; audioMgr = (AudioManager)getSystemService(Context.AUDIO_SERVICE); var rate = audioMgr.getProperty(AudioManager.PROPERTY_OUTPUT_SAMPLE_RATE); var size = audioMgr.getProperty(AudioManager.PROPERTY_OUTPUT_FRAMES_PER_BUFFER); System.Console.WriteLine("rate = " + rate); System.Console.WriteLine("size = " + size); // Check preferences SharedPreferences prefs = getApplicationContext().getSharedPreferences("oculusvr", MODE_PRIVATE); var username = prefs.getString("username", "guest"); System.Console.WriteLine("username = "******"action:" + intent.getAction()); System.Console.WriteLine("type:" + intent.getType()); System.Console.WriteLine("fromPackageName:" + fromPackageNameString); System.Console.WriteLine("command:" + commandString); System.Console.WriteLine("uri:" + uriString); SurfaceView sv = new SurfaceView(this); setContentView(sv); #region xCallback // X:\jsc.svn\examples\java\android\synergy\OVRVrCubeWorldSurfaceView\OVRVrCubeWorldSurfaceView\ApplicationActivity.cs var xCallback = new xCallback { onsurfaceCreated = holder => { if (appPtr == 0) return; nativeSurfaceCreated(appPtr, holder.getSurface()); mSurfaceHolder = holder; }, onsurfaceChanged = (SurfaceHolder holder, int format, int width, int height) => { if (appPtr == 0) return; nativeSurfaceChanged(appPtr, holder.getSurface()); mSurfaceHolder = holder; }, onsurfaceDestroyed = holder => { if (appPtr == 0) return; nativeSurfaceDestroyed(appPtr); mSurfaceHolder = holder; } }; #endregion sv.getHolder().addCallback(xCallback); // Force the screen to stay on, rather than letting it dim and shut off // while the user is watching a movie. //getWindow().addFlags( WindowManager_LayoutParams.FLAG_KEEP_SCREEN_ON ); //// Force screen brightness to stay at maximum //WindowManager.LayoutParams params = getWindow().getAttributes(); //params.screenBrightness = 1.0f; //getWindow().setAttributes( params ); this.ondispatchTouchEvent += (e) => { int action = e.getAction(); float x = e.getRawX(); float y = e.getRawY(); Log.d(TAG, "onTouch dev:" + e.getDeviceId() + " act:" + action + " ind:" + e.getActionIndex() + " @ " + x + "," + y); nativeTouch(appPtr, action, x, y); return true; }; this.ondispatchKeyEvent = (e) => { bool down; int keyCode = e.getKeyCode(); int deviceId = e.getDeviceId(); if (e.getAction() == KeyEvent.ACTION_DOWN) { down = true; } else if (e.getAction() == KeyEvent.ACTION_UP) { down = false; } else { Log.d(TAG, "source " + e.getSource() + " action " + e.getAction() + " keyCode " + keyCode); return base.dispatchKeyEvent(e); } Log.d(TAG, "source " + e.getSource() + " keyCode " + keyCode + " down " + down + " repeatCount " + e.getRepeatCount()); if (keyCode == KeyEvent.KEYCODE_VOLUME_UP) { if (down) { adjustVolume(1); } return true; } if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN) { if (down) { adjustVolume(-1); } return true; } // Joypads will register as keyboards, but keyboards won't // register as position classes // || event.getSource() != 16777232) // Volume buttons are source 257 if (e.getSource() == 1281) { // do we have one we can test with? //keyCode |= JoyEvent.BUTTON_JOYPAD_FLAG; } return buttonEvent(deviceId, keyCode, down, e.getRepeatCount()); }; }