Beispiel #1
0
        public override void ViewDidLoad()
        {
            base.ViewDidLoad();

            ArExperienceGroup restoredArExperienceGroup = ArExperienceManager.OpenFromFile(persitentArExperienceGroupFilePath);

            if (restoredArExperienceGroup != null)
            {
                arExperienceGroup = restoredArExperienceGroup;
            }
        }
        protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);
            SetContentView(Resource.Layout.Activity_url_launcher_storage);

            var toolbar = FindViewById(Resource.Id.toolbar) as Android.Support.V7.Widget.Toolbar;

            toolbar.SetTitle(Resource.String.url_launcher_title);

            SetSupportActionBar(toolbar);

            var addUrlFab = FindViewById(Resource.Id.url_add_experience_fab);

            addUrlFab.Click += (sender, e) => {
                var intent = new Intent(this, typeof(UrlLauncherSettingsActivity));
                intent.PutExtra(UrlLauncherExperienceGroup, ArExperienceGroup.Serialize(experienceGroup));
                StartActivity(intent);
            };
        }
        protected override void OnResume()
        {
            base.OnResume();
            startingAr = false;

            if (Intent.HasExtra(UrlLauncherExperienceGroup))
            {
                experienceGroup = ArExperienceGroup.Deserialize(Intent.GetByteArrayExtra(UrlLauncherExperienceGroup));
            }
            else
            {
                try
                {
                    using (var stream = OpenFileInput(StorageFile))
                    {
                        var formatter = new BinaryFormatter();
                        experienceGroup = formatter.Deserialize(stream) as ArExperienceGroup;
                    }
                }
                catch (Java.IO.FileNotFoundException) { }
            }

            var listView = FindViewById(Resource.Id.url_list_storage_view) as ListView;

            listView.ItemClick += (sender, e) => {
                if (!startingAr)
                {
                    startingAr = true;

                    lastExperience = experienceGroup.ArExperiences[e.Position];

                    string[] permissions = (lastExperience.FeaturesMask & Features.Geo) == Features.Geo ?
                                           new string[] { Manifest.Permission.Camera, Manifest.Permission.AccessFineLocation } :
                    new string[] { Manifest.Permission.Camera };

                    ArchitectView.PermissionManager.CheckPermissions(this, permissions, PermissionManager.WikitudePermissionRequest, this);
                }
            };
            adapter          = new UrlLauncherStorageListAdapter(this, experienceGroup);
            listView.Adapter = adapter;
        }
        protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);
            SetContentView(Resource.Layout.Url_launcher_row_settings);

            var preferences = GetSharedPreferences(AutocompletePrefs, 0);

            history = preferences.GetStringSet(AutocompletePrefsHistory, new List <string>());
            UpdateAutocompleteSource();

            urlView           = FindViewById(Resource.Id.url_launcher_url_text) as AutoCompleteTextView;
            nameView          = FindViewById(Resource.Id.url_launcher_name_edit_text) as EditText;
            geoSwitch         = FindViewById(Resource.Id.url_launcher_geo_switch) as Switch;
            imageSwitch       = FindViewById(Resource.Id.url_launcher_image_switch) as Switch;
            instantSwitch     = FindViewById(Resource.Id.url_launcher_instant_switch) as Switch;
            objectSwitch      = FindViewById(Resource.Id.url_launcher_object_switch) as Switch;
            camera2Switch     = FindViewById(Resource.Id.url_launcher_camera2_switch) as Switch;
            focusSpinner      = FindViewById(Resource.Id.url_launcher_focus_spinner) as Spinner;
            positionSpinner   = FindViewById(Resource.Id.url_launcher_position_spinner) as Spinner;
            resolutionSpinner = FindViewById(Resource.Id.url_launcher_resolution_spinner) as Spinner;

            editPosition    = Intent.GetIntExtra(UrlLauncherStorageActivity.UrlLauncherEditExperienceId, -1);
            experienceGroup = ArExperienceGroup.Deserialize(Intent.GetByteArrayExtra(UrlLauncherStorageActivity.UrlLauncherExperienceGroup));

            if (editPosition >= 0)
            {
                var experience = experienceGroup.ArExperiences[editPosition];
                urlView.Text  = experience.Path;
                nameView.Text = experience.Name;

                var features = experience.FeaturesMask;
                geoSwitch.Checked     = (features & Features.Geo) == Features.Geo;
                imageSwitch.Checked   = (features & Features.ImageTracking) == Features.ImageTracking;
                instantSwitch.Checked = (features & Features.InstantTracking) == Features.InstantTracking;
                objectSwitch.Checked  = (features & Features.ObjectTracking) == Features.ObjectTracking;

                int position;
                switch (experience.CameraPosition)
                {
                case CameraPosition.Back: position = 0; break;

                case CameraPosition.Front: position = 1; break;

                default: position = 0; break;
                }
                positionSpinner.SetSelection(position);

                int resolution;
                switch (experience.CameraResolution)
                {
                case CameraResolution.HD_1280x720: resolution = 1; break;

                case CameraResolution.Full_HD_1920x1080: resolution = 2; break;

                case CameraResolution.Auto: resolution = 3; break;

                default: resolution = 0; break;
                }
                resolutionSpinner.SetSelection(resolution);

                int focusMode;
                switch (experience.CameraFocusMode)
                {
                case CameraFocusMode.AutofocusOnce: focusMode = 1; break;

                case CameraFocusMode.AutofocusOff: focusMode = 2; break;

                default: focusMode = 0; break;
                }
                focusSpinner.SetSelection(focusMode);

                camera2Switch.Checked = experience.Camera2Enabled;
            }

            urlView.EditorAction += (sender, args) =>
            {
                if (args.ActionId == ImeAction.Send)
                {
                    StoreSettings();
                    args.Handled = true;
                }
            };

            var ok = FindViewById(Resource.Id.url_launcher_ok_button) as Button;

            ok.Click += (sender, args) =>
            {
                StoreSettings();
            };
        }
        private void StoreSettings()
        {
            history.Add(urlView.Text);
            UpdateAutocompleteSource();
            var preferences = GetSharedPreferences(AutocompletePrefs, 0);
            var editor      = preferences.Edit().PutStringSet(AutocompletePrefsHistory, history);

            editor.Apply();

            Features features = 0;

            if (geoSwitch.Checked)
            {
                features |= Features.Geo;
            }
            if (imageSwitch.Checked)
            {
                features |= Features.ImageTracking;
            }
            if (instantSwitch.Checked)
            {
                features |= Features.InstantTracking;
            }
            if (objectSwitch.Checked)
            {
                features |= Features.ObjectTracking;
            }

            CameraPosition cameraPosition;
            var            position = positionSpinner.SelectedItemId;

            switch (position)
            {
            case 1: cameraPosition = CameraPosition.Front; break;

            default: cameraPosition = CameraPosition.Back; break;
            }
            CameraResolution cameraResolution;
            var resolution = resolutionSpinner.SelectedItemId;

            switch (resolution)
            {
            case 1: cameraResolution = CameraResolution.HD_1280x720; break;

            case 2: cameraResolution = CameraResolution.Full_HD_1920x1080; break;

            case 3: cameraResolution = CameraResolution.Auto; break;

            default: cameraResolution = CameraResolution.SD_640x480; break;
            }
            CameraFocusMode cameraFocusMode;

            switch (focusSpinner.SelectedItemId)
            {
            case 1: cameraFocusMode = CameraFocusMode.AutofocusOnce; break;

            case 2: cameraFocusMode = CameraFocusMode.AutofocusOff; break;

            default: cameraFocusMode = CameraFocusMode.AutofocusContinuous; break;
            }

            var experience = new ArExperience(nameView.Text, urlView.Text, features, cameraPosition, cameraResolution, cameraFocusMode, camera2Enabled: camera2Switch.Checked);

            if (editPosition >= 0)
            {
                experienceGroup.ArExperiences[editPosition] = experience;
            }
            else
            {
                experienceGroup.ArExperiences.Add(experience);
            }

            var intent = new Intent(this, typeof(UrlLauncherStorageActivity));

            intent.PutExtra(UrlLauncherStorageActivity.UrlLauncherExperienceGroup, ArExperienceGroup.Serialize(experienceGroup));
            intent.AddFlags(ActivityFlags.ReorderToFront);
            StartActivity(intent);
        }
Beispiel #6
0
        public override View GetView(int position, View convertView, ViewGroup parent)
        {
            if (convertView == null)
            {
                var inflater = context.GetSystemService(Context.LayoutInflaterService) as LayoutInflater;
                convertView = inflater.Inflate(Resource.Layout.Url_launcher_list_row, null);
            }

            var experience = experienceGroup.ArExperiences[position];

            var name = convertView.FindViewById(Resource.Id.url_list_row_name) as TextView;

            name.Text = experience.Name;

            var editView = convertView.FindViewById(Resource.Id.url_list_row_edit);

            editView.Click += (sender, e) =>
            {
                var intent = new Intent(context, typeof(UrlLauncherSettingsActivity));
                intent.PutExtra(UrlLauncherStorageActivity.UrlLauncherExperienceGroup, ArExperienceGroup.Serialize(experienceGroup));
                intent.PutExtra(UrlLauncherStorageActivity.UrlLauncherEditExperienceId, position);
                context.StartActivity(intent);
            };

            var deleteView = convertView.FindViewById(Resource.Id.url_list_row_delete);

            deleteView.Click += (sender, e) =>
            {
                experienceGroup.ArExperiences.RemoveAt(position);
                NotifyDataSetChanged();
            };
            return(convertView);
        }
Beispiel #7
0
 public UrlLauncherStorageListAdapter(Context context, ArExperienceGroup experienceGroup)
 {
     this.context         = context;
     this.experienceGroup = experienceGroup;
 }