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); }
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(); } } }
/// <summary> /// 保存 /// </summary> public void OnClickStorage() { SampleStorageData data = new SampleStorageData(); data.message = "ストレージデータ送信!"; DataStorageManager.DataStorage(DataStorageManager.StorageKey.Sample, data); text.text = "データを保存しました"; }
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()); //개인정보취급방침 미리 읽어온다. } }
/// <summary> /// 取得 /// </summary> public void OnClickGetStorage() { SampleStorageData data = (SampleStorageData)DataStorageManager.GetStorageData(DataStorageManager.StorageKey.Sample); if (data != null) { text.text = "データを取得メッセージは\n" + data.message; } else { text.text = "データを取得失敗"; } }
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 새로고침 }
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(); }
//툴바 선택시 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)); }
//--------------------------------------------------------------------- // 오프라인 모드 여부 (서버 통신 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(); }
// 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(); }
//--------------------------------------------------------------------- // 기계학습 요청 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(); }
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)); } }
private void saveScanData() { string scan_data_str = ScanDataEncoder.Encode(scan_data_list); DataStorageManager.SaveScanData(file_name, scan_data_str); }