Ejemplo n.º 1
0
        protected override void onCreate(global::android.os.Bundle savedInstanceState)
        {
            // http://www.dreamincode.net/forums/topic/130521-android-part-iii-dynamic-layouts/
            // https://forums.oculus.com/viewtopic.php?f=67&t=27999



            var stringFromJNI = xMarshal.stringFromJNI(this);

            Console.WriteLine(new { stringFromJNI });



            //var refSystemActivities = typeof(global::com.oculus.systemutils.Ev);


            // loaded by
            // X:\opensource\ovr_sdk_mobile_1.0.0.0\VrAppSupport\VrSound\Src\SoundPool.cpp


            // "X:\opensource\ovr_sdk_mobile_1.0.0.0\VrAppSupport\VrSound\Projects\Android\src\com\oculus\sound\SoundPooler.java"

            //var refSoundPooler = typeof(global::com.oculus.sound.SoundPooler);
            //var refSoundPooler = typeof(global::com.oculus.sound.xSoundPooler);


            // static const char * videosDirectory = "Oculus/360Videos/";


            var mp4 =
                from pf in new DirectoryInfo("/sdcard/oculus/360Videos/").GetFiles()
                where pf.Extension.ToLower() == ".mp4"
                //where pf.Length == 0
                select pf;

            var mp4count = mp4.Count();

            Console.WriteLine(new { mp4count });

            foreach (var item in mp4)
            {
                Console.WriteLine(item.FullName);
            }

            var refVolumeReceiver = new com.oculus.vrgui.xVolumeReceiver {
            };
            var refSoundPooler    = new com.oculus.sound.xSoundPooler {
            };
            var refVrLocale       = typeof(global::com.oculus.vrlocale.VrLocale);
            //var refVolumeReceiver = typeof(global::com.oculus.vrgui.VolumeReceiver);

            //[javac] W:\src\x360video\Activities\ApplicationActivity.java:21: error: SoundPooler is not public in com.oculus.sound; cannot be accessed from outside package
            //[javac] import com.oculus.sound.SoundPooler;
            //[javac]                        ^

            var refSystemActivities = typeof(global::com.oculus.systemutils.SystemActivities);

            Console.WriteLine("enter onCreate " + new { refSystemActivities, refSoundPooler, refVrLocale, refVolumeReceiver });



            base.onCreate(savedInstanceState);

            Intent intent = getIntent();

            String commandString         = com.oculus.vrappframework.VrActivity.getCommandStringFromIntent(intent);
            String fromPackageNameString = com.oculus.vrappframework.VrActivity.getPackageStringFromIntent(intent);
            String uriString             = com.oculus.vrappframework.VrActivity.getUriStringFromIntent(intent);


            Console.WriteLine("onCreate " + new { fromPackageNameString, commandString, uriString });

            var p = com.oculus.oculus360videossdk.MainActivity.nativeSetAppInterface(this, fromPackageNameString, commandString, uriString);

            base_setAppPtr(p);

            audioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE);


            #region lets listen to incoming udp
            // could we define our chrome app inline in here?
            // or in a chrome app. could we define the android app inline?
            #region ReceiveAsync
            Action <IPAddress> f = async nic =>
            {
                //b.setText("awaiting at " + nic);


                WifiManager wifi = (WifiManager)this.getSystemService(Context.WIFI_SERVICE);
                var         lo   = wifi.createMulticastLock("udp:39814");
                lo.acquire();

                // Z:\jsc.svn\examples\java\android\AndroidUDPClipboard\ApplicationActivity.cs
                // X:\jsc.svn\examples\java\android\forms\FormsUDPJoinGroup\FormsUDPJoinGroup\ApplicationControl.cs
                // X:\jsc.svn\examples\java\android\LANBroadcastListener\LANBroadcastListener\ApplicationActivity.cs
                var uu = new UdpClient(39814);
                uu.JoinMulticastGroup(IPAddress.Parse("239.1.2.3"), nic);
                while (true)
                {
                    // cannot get data from RED?
                    var x = await uu.ReceiveAsync(); // did we jump to ui thread?

                    //Console.WriteLine("ReceiveAsync done " + Encoding.UTF8.GetString(x.Buffer));
                    //var data = Encoding.UTF8.GetString(x.Buffer);



                    // https://sites.google.com/a/jsc-solutions.net/work/knowledge-base/15-dualvr/20150704
                    // https://sites.google.com/a/jsc-solutions.net/work/knowledge-base/15-dualvr/20150704/mousedown
                    //SetClipboard(data);


                    var md5string = x.Buffer.ToHexString();
                    var lookup    = startMovieLookup.ContainsKey(md5string);


                    Console.WriteLine(new { md5string, lookup });
                    if (lookup)
                    {
                        // this wont work if we are paused.

                        this.startMovieFromUDP(
                            startMovieLookup[md5string]
                            );
                    }
                }
            };

            // WithEach defined at?
            NetworkInterface.GetAllNetworkInterfaces().WithEach(
                n =>
            {
                // X:\jsc.svn\examples\java\android\forms\FormsUDPJoinGroup\FormsUDPJoinGroup\ApplicationControl.cs
                // X:\jsc.svn\core\ScriptCoreLibJava\BCLImplementation\System\Net\NetworkInformation\NetworkInterface.cs

                var IPProperties    = n.GetIPProperties();
                var PhysicalAddress = n.GetPhysicalAddress();



                foreach (var ip in IPProperties.UnicastAddresses)
                {
                    // ipv4
                    if (ip.Address.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork)
                    {
                        if (!IPAddress.IsLoopback(ip.Address))
                        {
                            if (n.SupportsMulticast)
                            {
                                f(ip.Address);
                            }
                        }
                    }
                }
            }
                );
            #endregion


            #endregion
        }
        protected override void onCreate(global::android.os.Bundle savedInstanceState)
        {
            // http://www.dreamincode.net/forums/topic/130521-android-part-iii-dynamic-layouts/
            // https://forums.oculus.com/viewtopic.php?f=67&t=27999




            var stringFromJNI = xMarshal.stringFromJNI(this);
            Console.WriteLine(new { stringFromJNI });




            //var refSystemActivities = typeof(global::com.oculus.systemutils.Ev);


            // loaded by
            // X:\opensource\ovr_sdk_mobile_1.0.0.0\VrAppSupport\VrSound\Src\SoundPool.cpp


            // "X:\opensource\ovr_sdk_mobile_1.0.0.0\VrAppSupport\VrSound\Projects\Android\src\com\oculus\sound\SoundPooler.java"

            //var refSoundPooler = typeof(global::com.oculus.sound.SoundPooler);
            //var refSoundPooler = typeof(global::com.oculus.sound.xSoundPooler);


            // static const char * videosDirectory = "Oculus/360Videos/";


            var mp4 =
              from pf in new DirectoryInfo("/sdcard/oculus/360Videos/").GetFiles()
              where pf.Extension.ToLower() == ".mp4"
              //where pf.Length == 0
              select pf;

            var mp4count = mp4.Count();

            Console.WriteLine(new { mp4count });

            foreach (var item in mp4)
            {
                Console.WriteLine(item.FullName);
            }

            var refVolumeReceiver = new com.oculus.vrgui.xVolumeReceiver { };
            var refSoundPooler = new com.oculus.sound.xSoundPooler { };
            var refVrLocale = typeof(global::com.oculus.vrlocale.VrLocale);
            //var refVolumeReceiver = typeof(global::com.oculus.vrgui.VolumeReceiver);

            //[javac] W:\src\x360video\Activities\ApplicationActivity.java:21: error: SoundPooler is not public in com.oculus.sound; cannot be accessed from outside package
            //[javac] import com.oculus.sound.SoundPooler;
            //[javac]                        ^

            var refSystemActivities = typeof(global::com.oculus.systemutils.SystemActivities);
            Console.WriteLine("enter onCreate " + new { refSystemActivities, refSoundPooler, refVrLocale, refVolumeReceiver });



            base.onCreate(savedInstanceState);

            Intent intent = getIntent();

            String commandString = com.oculus.vrappframework.VrActivity.getCommandStringFromIntent(intent);
            String fromPackageNameString = com.oculus.vrappframework.VrActivity.getPackageStringFromIntent(intent);
            String uriString = com.oculus.vrappframework.VrActivity.getUriStringFromIntent(intent);


            Console.WriteLine("onCreate " + new { fromPackageNameString, commandString, uriString });

            var p = com.oculus.oculus360videossdk.MainActivity.nativeSetAppInterface(this, fromPackageNameString, commandString, uriString);

            base_setAppPtr(p);

            audioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE);


            #region lets listen to incoming udp
            // could we define our chrome app inline in here?
            // or in a chrome app. could we define the android app inline?
            #region ReceiveAsync
            Action<IPAddress> f = async nic =>
            {
                //b.setText("awaiting at " + nic);


                WifiManager wifi = (WifiManager)this.getSystemService(Context.WIFI_SERVICE);
                var lo = wifi.createMulticastLock("udp:39814");
                lo.acquire();

                // Z:\jsc.svn\examples\java\android\AndroidUDPClipboard\ApplicationActivity.cs
                // X:\jsc.svn\examples\java\android\forms\FormsUDPJoinGroup\FormsUDPJoinGroup\ApplicationControl.cs
                // X:\jsc.svn\examples\java\android\LANBroadcastListener\LANBroadcastListener\ApplicationActivity.cs
                var uu = new UdpClient(39814);
                uu.JoinMulticastGroup(IPAddress.Parse("239.1.2.3"), nic);
                while (true)
                {
                    // cannot get data from RED?
                    var x = await uu.ReceiveAsync(); // did we jump to ui thread?
                    //Console.WriteLine("ReceiveAsync done " + Encoding.UTF8.GetString(x.Buffer));
                    //var data = Encoding.UTF8.GetString(x.Buffer);



                    // https://sites.google.com/a/jsc-solutions.net/work/knowledge-base/15-dualvr/20150704
                    // https://sites.google.com/a/jsc-solutions.net/work/knowledge-base/15-dualvr/20150704/mousedown
                    //SetClipboard(data);


                    var md5string = x.Buffer.ToHexString();
                    var lookup = startMovieLookup.ContainsKey(md5string);


                    Console.WriteLine(new { md5string, lookup });
                    if (lookup)
                    {
                        // this wont work if we are paused.

                        this.startMovieFromUDP(
                            startMovieLookup[md5string]
                        );
                    }
                }
            };

            // WithEach defined at?
            NetworkInterface.GetAllNetworkInterfaces().WithEach(
                n =>
                {
                    // X:\jsc.svn\examples\java\android\forms\FormsUDPJoinGroup\FormsUDPJoinGroup\ApplicationControl.cs
                    // X:\jsc.svn\core\ScriptCoreLibJava\BCLImplementation\System\Net\NetworkInformation\NetworkInterface.cs

                    var IPProperties = n.GetIPProperties();
                    var PhysicalAddress = n.GetPhysicalAddress();



                    foreach (var ip in IPProperties.UnicastAddresses)
                    {
                        // ipv4
                        if (ip.Address.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork)
                        {
                            if (!IPAddress.IsLoopback(ip.Address))
                                if (n.SupportsMulticast)
                                    f(ip.Address);
                        }
                    }




                }
            );
            #endregion


            #endregion

        }