예제 #1
0
        private void Categorize()
        {
            //이벤트 등록
            _OnCategorizeComplete -= WelcomeActivity_OnCategorizeComplete;
            _OnCategorizeComplete += WelcomeActivity_OnCategorizeComplete;

            //온라인모드이면 인터넷 연결상태 체크함.
            if (DataStorageManager.LoadBoolData(this, "useOfflineMode", false) == false)
            {
                if (Xamarin.Essentials.Connectivity.NetworkAccess != Xamarin.Essentials.NetworkAccess.Internet)
                {
                    _OnCategorizeComplete.Invoke(this, new CategorizeEventArgs((int)CategorizeEventArgs.RESULT.NETWORKFAIL));
                    return;
                }
            }

            //프로그레스바 표기
            _Screens[(int)WELCOME_SCREEN.CATEGORIZE].ProgressBarViewStates = ViewStates.Visible;
            _ViewPager.Adapter.NotifyDataSetChanged();

            //카테고리 분류
            Thread thread;

            thread = new Thread(() => CreateLableDB());
            thread.Start();

            //ThreadPool.QueueUserWorkItem(o => CreateLableDB);
        }
예제 #2
0
        private void WelcomeActivity_OnCategorizeComplete(object sender, EventArgs e)
        {
            CategorizeEventArgs resultArgs = e as CategorizeEventArgs;
            bool   isSucceed = false;
            string toastMsg  = string.Empty;

            //프로그레스바 숨기기
            _Screens[(int)WELCOME_SCREEN.CATEGORIZE].ProgressBarViewStates = ViewStates.Invisible;
            RunOnUiThread(() => { _ViewPager.Adapter.NotifyDataSetChanged(); });

            switch (resultArgs.Result)
            {
            case (int)CategorizeEventArgs.RESULT.EXIST:
                toastMsg  = "메시지 분류가 이미 되어있습니다.";
                isSucceed = true;
                break;

            case (int)CategorizeEventArgs.RESULT.SUCCESS:
                toastMsg  = "메시지 분류가 완료되었습니다.";
                isSucceed = true;
                break;

            case (int)CategorizeEventArgs.RESULT.EMPTY:
                toastMsg  = "분류할 메시지가 없습니다.";
                isSucceed = true;
                break;

            case (int)CategorizeEventArgs.RESULT.FAIL:
                toastMsg  = "메시지 분류에 실패했습니다.";
                isSucceed = false;
                break;

            case (int)CategorizeEventArgs.RESULT.NETWORKFAIL:
                toastMsg  = "인터넷에 연결하신 후 시도해주시기 바랍니다.";
                isSucceed = false;
                break;
            }

            RunOnUiThread(() => { Toast.MakeText(this, toastMsg, ToastLength.Short).Show(); });

            if (isSucceed == false)
            {
                ShowRetryDialog();
            }
            else
            {
                if (DataStorageManager.LoadBoolData(Application.Context, "useOfflineMode", false))
                {
                    //오프라인 분석이 끝나면 화면 종료.
                    DataStorageManager.SaveBoolData(this, "isFirst", false);                                            //isFirst 해제
                    DataStorageManager.SaveBoolData(this, "supportMachineLearning", false);                             //기계학습 지원 비승인
                    Finish();                                                                                           //오프라인 모드를 사용하므로, 기계학습페이지를 표시하지 않고 바로 WelcomeActivity 종료
                }
                else
                {
                    //온라인 분석이 끝나면 다음 화면으로 이동.
                    MoveToNextScreen();
                }
            }
        }
예제 #3
0
    /// <summary>
    /// 保存
    /// </summary>
    public void OnClickStorage()
    {
        SampleStorageData data = new SampleStorageData();

        data.message = "ストレージデータ送信!";
        DataStorageManager.DataStorage(DataStorageManager.StorageKey.Sample, data);
        text.text = "データを保存しました";
    }
예제 #4
0
        protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);

            SetContentView(Resource.Layout.WelcomeActivity);

            //뷰페이저 설정
            _ViewPager = FindViewById <NonSwipeableViewPager>(Resource.Id.wa_viewpager);
            _NextBtn   = FindViewById <Button>(Resource.Id.wa_nextBtn);

            WelcomeScreenAdapter adapter = new WelcomeScreenAdapter(this, _Screens);

            _ViewPager.Adapter = adapter;
            _NextBtn.Click    += _NextBtn_Click;

            //처음이 아닌 경우
            _IsFirst = DataStorageManager.LoadBoolData(this, "isFirst", true);
            if (_IsFirst == false)
            {
                //기본 패키지로 되어있는가?
                if (PackageName.Equals(Telephony.Sms.GetDefaultSmsPackage(this)))
                {
                    _IsDefaultPackage = true;
                }

                _NeedRecategorize = DataStorageManager.LoadBoolData(this, "needRecategorize", false);

                //권한이 있는가?
                if (PermissionManager.HasPermission(this, PermissionManager.essentialPermissions))
                {
                    ;
                }
                _HasPermission = true;

                if (_IsDefaultPackage == false)                                                         //기본 패키지가 아니라면, 기본앱 설정 페이지로 이동.
                {
                    _ViewPager.SetCurrentItem((int)WELCOME_SCREEN.PACKAGE, false);
                }
                else if (_HasPermission == false)                                                       //권한이 없다면, 권한페이지로 이동.
                {
                    _ViewPager.SetCurrentItem((int)WELCOME_SCREEN.PERMISSION, false);
                }
                else if (_NeedRecategorize == true)
                {
                    _MessageDBLoadTsk = Task.Run(() => LoadMessageDBAsync());                               //미리 메시지 로드
                    _ViewPager.SetCurrentItem((int)WELCOME_SCREEN.CATEGORIZE, false);
                    DataStorageManager.SaveBoolData(this, "needRecategorize", false);
                }
                else                                                                                    //이미 설정 다되있으면 피니쉬
                {
                    Finish();
                }
            }
            else
            {
                _CreatePrivacyDialogTsk = Task.Run(() => CreatePrivacyDialog());                        //개인정보취급방침 미리 읽어온다.
            }
        }
예제 #5
0
    /// <summary>
    /// 取得
    /// </summary>
    public void OnClickGetStorage()
    {
        SampleStorageData data = (SampleStorageData)DataStorageManager.GetStorageData(DataStorageManager.StorageKey.Sample);

        if (data != null)
        {
            text.text = "データを取得メッセージは\n" + data.message;
        }
        else
        {
            text.text = "データを取得失敗";
        }
    }
예제 #6
0
        public override void OnReceive(Context context, Intent intent)
        {
            var msgs = Telephony.Sms.Intents.GetMessagesFromIntent(intent);

            string      displayName = string.Empty;
            int         unreadCnt   = 0;
            TextMessage objMsg      = null;

            foreach (var msg in msgs)
            {
                objMsg = ConvertToCustomMessageType(msg);                                                      //시스템 메시지 형식을 레뜨레 메시지 형식으로 변환

                UpdateMessage(context, objMsg);                                                                //메시지를 안드로이드 메시지 DB에 삽입

                ContactData objContact = ContactDBManager.Get().GetContactDataByAddress(objMsg.Address, true); //연락처에 있는지 조회

                //연락처에 없으면 서버에 전송.
                if (objContact == null)
                {
                    if (DataStorageManager.LoadBoolData(context, "useOfflineMode", false) == true)
                    {
                        //오프라인 모드 사용 시
                    }
                    else
                    {
                        //온라인 모드 사용 시
                        LableDBManager.Get().AccumulateLableDB(objMsg);                                 //서버에서 레이블 데이터 받은 후 레이블 DB에 저장
                    }

                    displayName = objMsg.Address;                                                   //연락처에 없으면 전화번호로 이름 표시
                }
                else
                {
                    displayName = objContact.Name;                                                  //연락처에 있으면 표시될 이름 변경
                }

                unreadCnt++;                                                                                                                          //읽지않은 개수 카운트

                NotificationHandler.ShowNotification(context, "Lettre Channel 1", displayName, objMsg.Msg, objMsg.Address, "Ticker", 101, unreadCnt); //알림 표시

                //IsLoaded가 true이면 어플이 포그라운드, 메시지 목록이 메모리에 올라와있는 상태임.
                //false이면 최근 메시지목록을 불러오지 않는다. (메모리에 올라간 메시지가 없기 때문에 Refresh하려면 크래시남)
                if (MessageDBManager.Get().IsLoaded == true)
                {
                    long thread_id = MessageDBManager.Get().GetThreadId(objMsg.Address);
                    MessageDBManager.Get().RefreshLastMessage(thread_id);                       //해당 메시지가 속하는 대화를 찾아 최신문자를 새로고침함.
                }
            }

            MainFragActivity.RefreshUI();               //UI 새로고침
        }
예제 #7
0
        private void parseData()
        {
            string data_file_content = DataStorageManager.ReadScanData(file_path);
            List <SingleScanData> multi_scan_data_list = ScanDataEncoder.Decode(data_file_content);

            Point3D[]      point_arr  = SensorOutputParser.Parse3DPoints(multi_scan_data_list.ToArray());
            List <Point3D> list_point = new List <Point3D>();

            foreach (Point3D point in point_arr)
            {
                if (point.Z >= -330 && point.Z <= 270)
                {
                    list_point.Add(point);
                }
            }
            point_data = list_point.ToArray();
        }
예제 #8
0
 //툴바 선택시
 public override bool OnOptionsItemSelected(IMenuItem item)
 {
     if (item.ItemId == Resource.Id.toolbar_search)
     {
         RunOnUiThread(() => { Toast.MakeText(this, "준비중인 기능입니다.", ToastLength.Short).Show(); });
     }
     else if (item.ItemId == Resource.Id.toolbar_recategorize)
     {
         DataStorageManager.SaveBoolData(this, "needRecategorize", true);
         LableDBManager.Get().Drop();
         StartActivityForResult(typeof(WelcomeActivity), REQUEST_RECATEGORIZE_COMPLETE);
     }
     else
     {
         RunOnUiThread(() => { Toast.MakeText(this, "준비중인 기능입니다.", ToastLength.Short).Show(); });
     }
     return(base.OnOptionsItemSelected(item));
 }
예제 #9
0
        //---------------------------------------------------------------------
        // 오프라인 모드 여부 (서버 통신 X)
        private void AskOfflineMode()
        {
            AlertDialog.Builder builder = new AlertDialog.Builder(this);
            builder.SetCancelable(false);
            builder.SetTitle("온라인 모드를 사용하시겠습니까?");
            builder.SetMessage("아니오를 누르시면 문자를 서버로 전송하지 않습니다.\n대신 문자 분류 정확성이 떨어지게 됩니다.");
            builder.SetPositiveButton("예", (senderAlert2, args2) =>
            {
                //온라인 모드이므로, 온라인 카테고리 분류 실행.
                DataStorageManager.SaveBoolData(this, "useOfflineMode", false);                         //오프라인 모드 사용하지 않음.
                Categorize();
            });
            builder.SetNegativeButton("아니오", (senderAlert2, args2) =>
            {
                DataStorageManager.SaveBoolData(this, "useOfflineMode", true);                        //오프라인 모드 사용
                Categorize();
            });
            Dialog dialog2 = builder.Create();

            dialog2.Show();
        }
예제 #10
0
        // add for testing purpose
        private void MenuItem_Click(object sender, RoutedEventArgs e)
        {
            //scan_data_1457689858
            string file_path         = @"../../ScanData/scan_data_1459942184.txt";
            string data_file_content = DataStorageManager.ReadScanData(file_path);
            List <SingleScanData> multi_scan_data_list = ScanDataEncoder.Decode(data_file_content);

            Point3D[] list_point = SensorOutputParser.Parse3DPoints(multi_scan_data_list.ToArray());

            //profiling the middle container profile
            ContainerStackProfiler csp = new ContainerStackProfiler(list_point.ToArray());

            Point3D[] middle_stack_profile_points = csp.GetMiddleStackProfile();
            Point3D[] left_stack_profile_points   = csp.GetSideStackProfile(false);
            Point3D[] right_stack_profile_points  = csp.GetSideStackProfile(true);

            ViewPortManager.GetInstance.DisplayContainerStack(middle_stack_profile_points, ConfigParameters.MIDDLE_STACK_CONTAINER_LENGTH);
            ViewPortManager.GetInstance.DisplayContainerStack(left_stack_profile_points, ConfigParameters.LEFT_STACK_CONTAINER_LENGTH);
            ViewPortManager.GetInstance.DisplayContainerStack(right_stack_profile_points, ConfigParameters.LEFT_STACK_CONTAINER_LENGTH);

            //(new DataRepresentChart(list_point.ToArray())).Show();
        }
예제 #11
0
        //---------------------------------------------------------------------
        // 기계학습 요청

        private void AskMachineSupport()
        {
            AlertDialog.Builder builder2 = new AlertDialog.Builder(this);
            builder2.SetCancelable(false);
            builder2.SetTitle("기계학습 지원 요청");
            builder2.SetMessage("기계학습 지원을 하시겠습니까?");
            builder2.SetPositiveButton("예", (senderAlert2, args2) =>
            {
                DataStorageManager.SaveBoolData(this, "isFirst", false);                                      //isFirst 해제
                DataStorageManager.SaveBoolData(this, "supportMachineLearning", true);                        //기계학습 지원 승인
                Finish();                                                                                     //Welecome Activity 종료
            });
            builder2.SetNegativeButton("아니오", (senderAlert2, args2) =>
            {
                DataStorageManager.SaveBoolData(this, "isFirst", false);                                        //isFirst 해제
                DataStorageManager.SaveBoolData(this, "supportMachineLearning", false);                         //기계학습 지원 비승인
                Finish();
            });
            Dialog dialog2 = builder2.Create();

            dialog2.Show();
        }
예제 #12
0
        private async void CreateLableDB()
        {
            //메시지 DB가 로드될때까지 대기
            RunOnUiThread(() => { Toast.MakeText(this, "메시지 DB를 불러오는중...[1/4]", ToastLength.Short).Show(); });
            await _MessageDBLoadTsk;

            //미분류 메시지가 하나도 없는 경우
            if (MessageDBManager.Get().UnknownDialogueSet.Count <= 0)
            {
                _OnCategorizeComplete.Invoke(this, new CategorizeEventArgs((int)CategorizeEventArgs.RESULT.EMPTY));
                return;
            }

            //서버와 통신해서 Lable DB 생성 후 메모리에 올림.
            LableDBManager.Get().CreateDBProgressEvent += WelcomeActivity_CreateDBProgressEvent;

            bool isOffline = DataStorageManager.LoadBoolData(this, "useOfflineMode", false);

            if (isOffline)
            {
                LableDBManager.Get().CreateLableDB_Offline(MessageDBManager.Get().UnknownDialogueSet);
            }
            else
            {
                LableDBManager.Get().CreateLableDB(MessageDBManager.Get().UnknownDialogueSet);
            }

            //레이블 DB가 생성되었나?
            if (LableDBManager.Get().IsDBExist())
            {
                _OnCategorizeComplete.Invoke(this, new CategorizeEventArgs((int)CategorizeEventArgs.RESULT.SUCCESS));
            }
            else
            {
                _OnCategorizeComplete.Invoke(this, new CategorizeEventArgs((int)CategorizeEventArgs.RESULT.FAIL));
            }
        }
예제 #13
0
        private void saveScanData()
        {
            string scan_data_str = ScanDataEncoder.Encode(scan_data_list);

            DataStorageManager.SaveScanData(file_name, scan_data_str);
        }