示例#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
        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());                        //개인정보취급방침 미리 읽어온다.
            }
        }
示例#4
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 새로고침
        }
示例#5
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));
            }
        }