기본 콘텐츠로 건너뛰기

7월, 2023의 게시물 표시

안드로이드앱 "매직미러"를 이용한 자세 교정(골프)

안드로이드앱 "매직미러"를 이용한 교정 영상입니다.

2 files found with path 'lib/x86_64/libc++_shared.so' from inputs: 오류 해결 방법

안드로이드스튜디오로 앱을 개발하는 과정에서 플러그인, 외부 라이브러리를 추가하다 보면 "2 files found with path 'lib/ x86_64 /libc++_shared.so' from inputs: "과 같은 오류를 만날 수 있다. 'lib/x86_64/libc++_shared.so' 파일이 2개의 라이브러리에서 참조되어 발생하는 문제로 컴파일 환경에 따라 플랫폼 부분은 변경되면 나타날 수 있다 app수준의 build.gradle 파일에 다음과 같이 처리하면 관련 문제를 깔끔하게 처리 가능하다. android { ... packagingOptions { pickFirst 'lib/ x86 /libc++_shared.so' pickFirst 'lib/ x86_64 /libc++_shared.so' pickFirst 'lib/ arm64-v8a /libc++_shared.so' pickFirst 'lib/armeabi-v7a/libc++_shared.so' } ... } * 실제 내 앱소스내 코드임 * 위와 같이 컴파일 환경에서 제공하는 플랫폼별 참조를 전부 한번에 처리하는게 관련 오류를 원천 차단할 수 있는 방법이다.

안드로이브 뷰의 백그라운드 설정을 위한 2개 메서드 이용 방법

setBackgroundResource()와 setBackground()를 이용해서 Android 애플리케이션에서 View의 백그라운드를 설정하는 두 가지 방법입니다. 1. setBackgroundResource()    - 리소스 ID를 통해 백그라운드를 설정합니다.    - 파라미터로 리소스 ID를 받으며, 주로 R.drawable에서 제공하는 이미지나 그림 리소스를 사용합니다.      예를 들어, setBackgroundResource(R.drawable.background_image)와 같이 사용합니다.    - 이 메서드는 내부적으로 리소스를 로드하고, 해당 리소스를 백그라운드로 설정합니다. 2. setBackground()     - Drawable 객체를 통해 백그라운드를 설정합니다.     - 파라미터로 Drawable 객체를 받으며, ColorDrawable, BitmapDrawable, GradientDrawable 등 다양한 종류의 Drawable을 사용할 수 있습니다.       ( 예 : setBackground(new ColorDrawable(Color.WHITE))와 같이 사용합니다.     - 이 메서드는 주어진 Drawable 객체를 직접 백그라운드로 설정합니다. 위 두가지 메서드의, 주요한 차이점은 setBackgroundResource()는 리소스 ID를 통해 백그라운드를 설정하고, setBackground()는 Drawable 객체를 통해 백그라운드를 설정한다는 것입니다.

안드로이드 앱 버전 관리

AndroidManifest.xml 파일내 <manifest> 요소 안에서   <!-- 앱의 내부적인 버전 코드 나타냄. 정수값으로 설정되어야 하며, 각 버전은 고유한 값을 가져야 하며, 버전 코드는 앱의 업데이트나 배포를 관리하는 데 사용됨. -->  - android:versionCode: 2  <!-- 앱의 표시 버전 이름을 나타내며, 문자열로 설정되며, 주로 사용자에게 표시되는 앱 버전을 나타내는 용도로 사용됨. -->  - android:versionName: 1.2 ** 위 경우 구글 콘솔에서는 "2 (1.2)" 표기됨 ** 버전 코드는 릴리즈 순차 번호 관리하는게 편함 ** 버전 이름은 메이저 업데이트는 앞자리(1), 마이너 업데이트는 뒷자리(.2) 형식으로 구성하는게 일반적임    1.1.1.*등 세부적인 관리 체계에 따라 단계는 더 구분해도 됨

안드로이드 액티비티의 시스템 UI, 뷰 영역 제어

ActivityMainBinding    activityMainBinding = ActivityMainBinding.inflate ( getLayoutInflater ( ) ); activityMainBinding.getRoot ( ).setSystemUiVisibility (    //안전한 시스템 UI 레이아웃을 유지하도록 지정    //뷰가 시스템 UI의 변경으로 인해 크기나 위치가 변해도 안정된 레이아웃을 유지할 수 있다.    View.SYSTEM_UI_FLAG_LAYOUT_STABLE |           //뷰가 내비게이션 바가 표시되는 영역까지 확장    | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION      //뷰가 상태바가 표시되는 영역까지 확장    | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN      //내비게이션 바를 숨겨, 사용자의 터치나 제스처로 내비게이션 바가 나타나지 않도록 한다.    | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION     // 상태바를 숨겨, 사용자의 터치나 제스처로 상태바가 나타나지 않도록 한다.    | View.SYSTEM_UI_FLAG_FULLSCREEN      //사용자가 액티비티의 화면 어느 곳이든 터치하면 시스템 UI가 일시적으로 표시되지만, 일정 시간이 지나면 다시 숨겨진다.    | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY ); setContentView ( activityMainBinding.getRoot ( ) ); /* 결과적으로 위 코드를 통해 전체 화면을 차지하는 뷰를 만들고, 사용자가 화면을 터치하면 잠시 시스템  UI가 나타나도록 할 수 있다.

Visual Studio Xamarin 프로젝트에서 Google Play Services 광고 SDK를 사용하는 방법

1. NuGet 패키지 설치 (패키지 관리자 콘솔 이용)      Install-Package Xamarin.GooglePlayServices.Ads 2.  Google Play Services 추가     - 프로젝트의 Android 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 "Google Play 서비스 추가" 선택     - "광고" 카테고리에서 "광고"를 선택하고 확인 버튼 클릭   3. Android 매니페스트 업데이트     - Android 프로젝트의 Properties 폴더에서 AndroidManifest.xml 파일 선택     - manifest 요소에 다음 사용 권한 추가       <uses-permission android:name="android.permission.INTERNET" />     - application 요소 내에 다음 <meta-data> 요소를 추가       <meta-data          android:name="com.google.android.gms.ads.APPLICATION_ID"          android:value="현재 앱의 AdMob ID" /> 4. 레이아웃 파일에 광고 뷰 추가     - 광고를 추가할 레이아웃 파일 (예: activity_main.axml)을 오픈     - AdView를 추가하기 위해 원하는 위치에 <com.google.android.gms.ads.AdView> 요소 추가  <com.google.android.gms.ads.AdView     android:id="@+id/adView"     android:layout_width="wrap_content"     android:layout_height="wrap_content"     ads:adSize=&quo

ConstraintLayout을 뷰의 오른쪽 사이드 중간에 배치해야 할때

안드로이드 스튜디오에서 자바기반의 앱을 만드는 과정에서 ConstraintLayout을 뷰의 오른쪽 사이드 중간에 배치해야할 상황이 생겼다. 아래 4개 속성으로 부모뷰의 오른쪽 사이드 중간에 배치문제 해결. //오른쪽에 배치될 수 있도록 설정 app:layout_constraintRight_toRightOf="parent" //수직으로 중앙에 위치시키도록 설정 app:layout_constraintTop_toTopOf="parent" app:layout_constraintBottom_toBottomOf="parent" // 뷰를 수직으로 중앙에 위치시키기 위한 비율 값 설정. 0.5는 화면의 중앙에 위치하는 값 app:layout_constraintVertical_bias="0.5"

화낙(FANUC) CNC 데이터 수집 프로그램

화낙 CNC에서 200개가 넘는 상태값을 뽑아오고 프로그램을 백업하거나 복구하는 프로그램입니다. 단독형, 서버형, MES(POP) with CNC 형태로 구성가능합니다 CNC 운영정보와 함께 전력량계를 통한 전압/전류/주파수 정보를 파악하여 추가적인 분석에 활용 가능합니다. ​ 수집데이터 샘플입니다. ======Statusinformation====== state run(0.reset 1.stop 2.hold 3.start) = 3 m,s,t,b status 0.other 1.Fin = 1 axis motion(0.? 1.Motion 3.Dwell = 0 state automatic mode 0: ****(Noselection)1 : MDI 2 : TAPE(Series 15),DNC(Series15i) 3 : MEMory4 : EDIT 5 : TeacHIN = 1 T/Mmode(0.T 1.M) = 0 max emergency(0.Not 1.Emergency 2.Reset) = 0 Alarm(0.other 1.alarm 2. Batterylow 3. FAN 4.PS warning 5.FSSB waring 6.Leakage waring 7.Encoder waring 8.PMC alarm= 0 ​ =====Actualfeedrate====== name(F.feedrate S.Spindlespeed: F feed rate data: 0 feed rate decimal point: 0 feed rate unit(0.mm/min 1.inch/min 2.rpm 3.mm/rev 4.inch/rev): 0 feed rate display flag: 0 select position: 0 ​ ====== Actualspindlespeed ====== name(F.feedrate S.Spindlespeed: S spindle speed data: 3467 spindle speed decimal po