반응형

PHP 47

[안드로이드] BroadcastReceiver상속 클래스의 리부팅 해결 방법

핸드폰을 껐다가 키는 경우가 종종 있다.(업데이트 이슈가 대표적) 이 리부팅을 할 때 어플의 알람데이터가 없어진다. 이 데이터를 다시 복구하기 위해선 BroadcastReceiver를 상속하는 클래스의 onRecieve메소드를 다음과 같이 변경해줘야 한다. (처음에 리부팅 상황이 아닌 경우와 리부팅 상황인 경우를 합쳐서 쓰다보니 아래의 createNotiChannelHigh메소드와 notifyFullScreen메소드를 리부팅할 때마다 호출하는 문제가 생겼었다. 이 메소드를 조건을 붙여 분리시켜야 한다.) @Overridepublic void onReceive(Context context, Intent intent) { //createNotificationChannel(context); //그냥 메세..

PHP 2025.03.04

[android] "다른 프로세스가 파일을 사용 중 ~~" 에러메세지 해결

빌드할 때 다음과 같은 에러가 떳다. ~~~\mergeDexRelease\classes.dex:다른 프로세스가 파일을 사용 중이기 때문에 프로세스가 액세스 할 수 없습니다 다른 프로세스가 사용중~~ 이란 에러를 접하면taskkill /im java.exe /f이 명령어로 해결하자.     https://jjkong.tistory.com/12 [오류해결] 안드로이드 스튜디오 다른 프로세스가 파일을 사용 중이기 때문에 프로세스가 액세\app\build\intermediates\compile_and_runtime_not_namespaced_r_class_jar\debug\R.jar: 이 경우 터미널에서 taskkill /im java.exe /f 를 입력하면 프로세스가 종료 되면서 실행이 원활하게 이루어 진다..

PHP 2024.11.27

[java] 난수 생성을 응용해서 사칙연산 랜덤 생성하기

사칙연산 문제와 답을 랜덤으로 생성하는 걸 만들었다.핵심은 이항인데, 뺄셈이나 나눗셈의 정답이 원하지 않는 범위 (음수거나 소수)가 나올 경우에 대비해서다. public ArrayList getCalculProblem() { ArrayList result = new ArrayList(); //사칙연산 중 하나 선택 //가 = 1, 감 = 2, 승 = 3, 제 = 4 int opt = (int) (Math.random() * 4) + 1; //문제에 등장하는 숫자 int problem_1 = 0, problem_2 = 0, solution = 0; String opt_str = "", problem_str = ""; ..

PHP 2024.11.27

[안드로이드 스튜디오] Toast팝업 커스터마이징 하기

Toast가 항상 아래부분에 정형화된 짧막한 메시지만 전달한다고 생각해서 다르게 만들어봤다. public class CustomToast { public static Toast createToast(Context context, String message) { LayoutInflater inflater = LayoutInflater.from(context); ToastCustomBinding binding = DataBindingUtil.inflate(inflater, R.layout.toast_custom, null, false); binding.tvSample.setText(message); Toast toast = new Toast(contex..

PHP 2024.11.03

activity를 1번만 notify 시키게 하기

알람 앱은 화면도 중요하지만 음악 재생도 중요하다. 설령 2번 연속 액티비티 호출돼서 음악이 2번 재생되면설정 상세 메뉴를 통해 강제종료시키지 않는 한, 음악 종료를 할 수 없게 된다. notifyManager를 생성해 intent와 pendingIntent를 만들고 설정시킬 때 2가지 옵션을 기억하면 된다. 1) FLAG_ACTIVITY_CLEAR_TOP, FLAG_ACTIVITY_ SINGLE_TOP Intent fullscreenIntent = new Intent(context, FullscreenIntentActivity.class); fullscreenIntent.setAction("fullscreen_activity"); fullscreenIntent.se..

PHP 2024.10.30

remove actionBar, navigationBar programmatically

알람 관련해서 화면을 만드려고 하는데1) 위의 액션바2) 아래의 네비게이션바2개를 없애려고 한다. 사실 이 2개는 일반 어플을 실행할 때 중요한 부분이여서 없으면 안되지만, 알람화면 같이 단순정보를 전달하고 종료하는 경우엔 액션바, 네이게이션바는 필요없다. 방법은 아주 간단하다. @Override protected void onCreate(Bundle savedInstanceState) { //위 상태바 부분 없애기 requestWindowFeature(getWindow().FEATURE_NO_TITLE); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.L..

PHP 2024.10.30

[Material-Calendar 응용] 특정한 날짜들에 스타일 적용시켜주기 (DayViewDecorator응용)

다음과 같이 토요일과 일요일의 날짜 색깔을 바꾸려면 DayViewDecorator를 implements한 클래스가 필요하다.  다음과 같이 클래스 명명 해준뒤  DayViewDecorator 오버라이드 메소드를 적어준다.  *** 그 다음으로 생성자 지정을 해줄텐데,1) 토요일, 파란색2) 일요일, 빨간색이렇게 두가지 속성(무슨요일, 무슨색)이 있어야 구현될 것이기 때문에 이 속성을 받게될 생성자를 만든다. 그 다음 아까전에 적어준 오버라이드 메소드 중, shouldDecorate 메소드를 구현한다.여기선 조건에 관한 구현을 해줄 것이다. 여기서 관건은 Calendar.DAY_OF_WEEK 값을 구하기 위해 CalendarDay형식을 Calendar형식으로 변환시켜주는 것이다. tmp_cal을 Calen..

PHP 2024.10.23

[Material-calendar] 날짜(각 칸, 항목) 스타일을 한 번에 잡아주는 selector xml

material엔 decorator라는 커스터마이징할 수 있는 장치가 있다.  이를 설정하려면addDecorator, addDecorators 기존 설정을 없애려면removeDecoators, invalidateDecorators 위의 메소드를 잘 사용하면 된다. 이번엔 addDecorator에 공통으로 적용할 사항을 넣어주려고 한다.  다음과 같이 메소드 선언해주고 괄호 안에 SelectDecorator를 넣어준다.이 selectDecorator는 내가 임의로 만든 클래스다. 여기서 눈 여겨 봐야할 게 3가지다. 1. shouldDecorator에서 true를 리턴해야 내가 설정한 drawable이 보여진다.2. decorator에서 view.setSelectionDrawable로 생성자에서 지정한 d..

PHP 2024.10.21

[Android Studio] material-calendar의 지정된 날짜에 decorate해주기

DayViewDecorator는 material-calendar의 특정 날짜에 데코 해주는 기능이다.이때 addSpan을 이용하면 canvas를 통해 점이나 텍스트를 넣어줄 수 있다. 이때 문제가 생기는 shouldDecorate라는 오버라이드 메소드 때문에 반드시 날짜 객체는 CalendarDay라는 Material-Calendar의 고유 객체를 사용해야한다.  이 생성자를 찾아봤는데 Parcel이란 직렬객체(?)를 이용해야한다길래 포기했었다. 그래서 다른 방법이 없을까 하고 열심히 검색해본 결과, 대체할 수 있는 법을 찾았다. 바로 from이란 static메소드를 이용하면 CalendarDay객체를 쉽게 생성할 수 있다.  단, Date객체로 변환시켜 getYear~getDate메소드 통해 년월일을 ..

PHP 2024.10.17

안드로이드 스튜디오 dependency 문제해결

예전 프로젝트에선 앱수준 build.gradle에서 이렇게 implentation지정을 해줬다. 또한 이런 모듈/라이브러리를 참조할 주소는 이곳 프로젝트수준의 build.gradle에서 설정했다.  -------------------새로운버전---------------- 너무 달라졌다. 우선 라이브러리 문자열 설정을 이곳 libs.versions.toml에서 지정한다.  [versions]에선 각 라이브러리의 version을 지정해준다. 이 versions에 선언된 변수를 version.ref라는 속성을 이용해[libraries]에서 써먹는다.  위의 calendar-ui는 다음과 같이 libs.calendar.ui로 변경시켜 implementation 시켜준다.  * 그리고 이를 참조할 jitpack...

PHP 2024.10.15
반응형