'android'에 해당되는 글 28건

  1. 안드로이드 ADB로 컴퓨터에서 화면 캡쳐하기
  2. 맥에서 안드로이드폰과 테더링 해 인터넷 사용하기
  3. Favorite - 안드로이드 커뮤니티(게시판, SNS)앱 만들기(오픈소스) 69
  4. 안드로이드 개발 - 소프트키에서만 나타나는 Overflow메뉴 일반 기기에서도 활성화하기 1
  5. 안드로이드 개발 - 비트맵(Bitmap) 비율 맞추면서 크기 줄이기(썸네일 생성)
  6. 안드로이드 개발 - ImageView 다양한 표시 방법 android:scaleType
  7. 안드로이드 개발 - 파일(File) 유무 확인하기
  8. 안드로이드 개발 - 비트맵을 파일로 변환하기(Bitmap to file)
  9. 안드로이드 개발 - 설치시 이클립스 Timeout 오류 해결하기
  10. 안드로이드 개발 - 이클립스(Eclipse)가 휴대폰을 인식하지 못하는 경우

안드로이드 기기에서 캡쳐하고 파일을 옮길 필요 없이 ADB로 바로 화면 캡쳐한 파일을 가져올 수 있습니다.

안드로이드 ADB로 컴퓨터에서 화면 캡쳐하기

먼저 기본적으로 컴퓨터에서 ADB(Android Debug Bridge)를 사용할 수 있어야 합니다. - https://developer.android.com/studio/command-line/adb.html?hl=ko

 터미널이나 명령 프롬프트에서 아래와 같이 입력하면 현재 위치하는 폴더에 캡쳐한 파일이 생성되게 됩니다.

adb shell screencap -p | perl -pe 's/\x0D\x0D\x0A/\x0A/g' > screen.png



기본적으로 안드로이드는 맥과의 USB 테더링을 지원하지 않습니다. 따라서 맥에서 안드로이드 기기와 테더링 하기 위해서는 따로 만들어진 드라이버를 설치해야 합니다.



맥에서 안드로이드폰과 테더링 해 인터넷 사용하기


http://joshuawise.com/horndis - HoRNDIS Driver 사이트


HoRNDIS-Rel8.pkg 2017-7-10 기준 최신버전


위 링크에 들어가 자신의 macOS 버전에 맞는 가장 최신 버전을 다운로드 받아 설치해줍니다. 2017-7-10 기준 가장 최신 버전은 버전 8이며 10.11 엘 캐피탄과 10.12 시애라를 지원합니다.

설치 후 기기와 USB 연결 뒤 무선 및 네트워크 설정 -> 테더링 및 휴대용 핫스팟 부분에서 USB 테더링을 켜면 아래 사진과 같이 네트워크 설정에서 안드로이드폰을 통해 인터넷에 연결된 걸 확인할 수 있습니다.




앱을 개발할때, 누구나 자신의 앱에 사용자들이 대화하거나, 공지사항으로 앱의 새소식을 알리고, 댓글을 달면 알림이 가는등 사용자가 참여할 수 있는 커뮤니티 공간이 있었으면 좋겠다고 생각해봤을 것입니다.


하지만 만드는 데에는 그만큼의 시간과 노력을 들여야 합니다. 에를들어 서버 구축이라든지, 서버에서 처리하는 코드라든지, 클라이언트 코드를 짜야하는거라든지..


이런 과정 없이 다른 프로그래밍이나 서버구축 같은거 없이 그럴듯한 아래 사진과 같은 앱을 최소한의 과정으로 제작할 수 있는 오픈소스 커뮤니티 클라이언트 프로젝트입니다.







Favorite - 안드로이드 커뮤니티(게시판, SNS)앱 만들기(오픈소스)



1. Favorite 앱





자신이 즐겨찾기한 페이지를 간단명료하게 보여주고 소통할수 있는 종합적인 어플리케이션입니다. 


페이지(커뮤니티)를 생성해  그룹이나, 소개용 등 목적에 따라서 다양하게 이용할 수 있습니다.

- 사진이나 파일 업로드가 가능하며 최대 30MB 업로드를 지원합니다.

- 나에게 글이나, 댓글 작성시 알림을 받을 수 있습니다.



Play 스토어에서 다운로드 가능하며, 오픈소스입니다.


Play Store : http://play.google.com/store/apps/details?id=com.tarks.favorite

Github : https://github.com/tarksgit/Favorite-Android-Client




2. Favorite Example





위의 Favorite을 여러분들이 쉽게 독립적인 어플로 만들기 쉽게 만든 데모 버전이며, 이 오픈소스를 어떻게 활용해야할지에 대한 하나의 적절한 예시입니다.


목록에서 자신이 의도한 페이지(커뮤니티)로 이동하게 하는 방법이 있습니다. 마찬가지로, 이 데모도 오픈소스입니다.


https://github.com/tarksgit/Favorite-Android-Client-Example


이 데모를 사용하여 자신만의 커뮤니티 앱을 만드는 더 자세한 방법은 아래 링크에 잘 설명되어있습니다.


http://tarks.net/favoritedevelop_android/105393







도움이 되셨나요?

그럼 손가락을 눌러주세요:)






안드로이드 기기 버튼의 종류는 전면에 버튼이 없는 소프트키 기기와 메뉴, 홈, 뒤로가기 키 같이 하드웨어 키로 이루어진 경우로 나누어집니다.

근데 소프트키의 대부분은 하드웨어의 메뉴 버튼이 멀티태스킹 버튼으로 대체하기 때문에 메뉴 키가 따로 없습니다.


그래서 소프트키가 있는 휴대폰은 상단에 Overflow 메뉴가 나타납니다.(점 땡땡땡)





하지만 이 메뉴는 하드웨어키를 사용하는 기기에는 보이지 않습니다.


메뉴키가 하단에 이미 있기 때문에 크게 상관은 없지만 UI 일관성에는 별로 좋지 않습니다.




안드로이드 개발 - 소프트키에서만 나타나는 Overflow메뉴  일반 기기에서도 활성화하기



앱을 로드하는 맨 처음 액티비티에 몇줄의 코드에 삽입함으로써 이 문제를 해결할 수 있습니다.

일반 하드웨어키를 사용하는 기기에서도 소프트웨어 키를 사용하는 기기같이 상단에 Overflow 메뉴가 나타납니다.




  
	try {
	        ViewConfiguration config = ViewConfiguration.get(this);
	        Field menuKeyField = ViewConfiguration.class.getDeclaredField("sHasPermanentMenuKey");
	        if(menuKeyField != null) {
	            menuKeyField.setAccessible(true);
	            menuKeyField.setBoolean(config, false);
	        }
	    } catch (Exception ex) {
	        // Ignore
	    }






도움이 되셨나요?

그럼 손가락을 눌러주세요:)

안드로이드에서 이미지 파일을 표시할때나,다룰때 파일 크기가 너무 커면 느려진다거나, 스크롤이 버벅이는등의 현상이 일어납니다.

크기가 작은 이미지 파일을 생성함으로써, 위의 문제를 어느정도 해결할 수 있습니다.


안드로이드 개발 - 비트맵(Bitmap) 비율 맞추면서 크기 줄이기(썸네일 생성)



  
	// Bitmap to File
//bitmap에는 비트맵, strFilePath에 는 파일을 저장할 경로, strFilePath 에는 파일 이름을 할당해주면 됩니다.
		public static void createThumbnail(Bitmap bitmap, String strFilePath,
				String filename) {
			
			File file = new File(strFilePath);

			// If no folders
			if (!file.exists()) {
				file.mkdirs();
				// Toast.makeText(this, "Success", Toast.LENGTH_SHORT).show();
			}
			File fileCacheItem = new File(strFilePath + filename);
			OutputStream out = null;
			



			try {
				
				int height=bitmap.getHeight();
				int width=bitmap.getWidth();
				
				
				fileCacheItem.createNewFile();
				out = new FileOutputStream(fileCacheItem);
//160 부분을 자신이 원하는 크기로 변경할 수 있습니다.
				bitmap = Bitmap.createScaledBitmap(bitmap, 160, height/(width/160), true);
				bitmap.compress(CompressFormat.JPEG, 100, out);
			} catch (Exception e) {
				e.printStackTrace();
			} finally {
				try {
					out.close();
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		}



위의 방법으로 하면 자신이 원하는 경로에 썸네일 파일을 생성할 수 있습니다.

Sdcard 경로에 저장하는 경우에는 아래 권한을 할당해 주어야 합니다.


   <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />









도움이 되셨나요?

그럼 손가락을 눌러주세요:)

안드로이드 어플리케이션 개발 시 ImageView를 많이 사용하는 경우가 많은데 android:scaleType 속성을 쓰면 이미지의 다양한 표시 효과를 나타낼 수 있습니다.(늘이기, 가운데 자르기 등)





안드로이드 개발 - ImageView 다양한 표시 방법 android:scaleType


Scaltype에는 8가지 종류가 있습니다.  


1. matrix(원본 그대로)


2. center(가운데 정렬)


3. centerCrop(비율을 유지하며 가운데를 중심으로 자른다.)


4. centerInside(비율을 유지하며 줄어듬)


5. fitStart(왼쪽 위 정렬/ 비율유지)


6. fitCenter(centerInside와 동일)


7. fitEnd(왼쪽 아래 정렬 / 비율유지)


8. fitXY(늘이기 ImageView를 비율에 상관없이 다 채웁니다.)



xml인 경우 속성값에 있는 값을  android:scaleType="값" 안에다 넣어주는 방식으로 하면 됩니다.

java 코드인 경우 imageView.setScaleType(ImageView.ScaleType.값); 으로 하면 됩니다.

자세한 것은 아래 표를 참조하세요

속성값

java

설명

matrix

setScaleType(ImageView.ScaleType.MATRIX)

원본 크기 그대로 보여줌 (왼쪽 상단 정렬)

Center

setScaleType(ImageView.ScaleType.CENTER)

원본 크기 그대로 보여줌 (가운데정렬)

centerCrop

setScaleType(ImageView.ScaleType.CENTER_CROP)

View 영역에 공백이 있으면 채워서 보여줌(비율유지)

centerInside

setScaleType(ImageView.ScaleType.CENTER_INSIDE)

View 영역을 벗어나면 맞춰서 보여줌(비율유지)

fitStart

setScaleType(ImageView.ScaleType.FIT_START)

View 영역에 맞게 보여줌 (왼쪽상단 정렬비율유지)

fitCenter

setScaleType(ImageView.ScaleType.FIT_CENTER)

View 영역에 맞게 보여줌 (가운데정렬비율유지)

fitEnd

setScaleType(ImageView.ScaleType.FIT_END)

View 영역에 맞게 보여줌 (왼쪽하단 정렬비율유지)

fitXY

setScaleType(ImageView.ScaleType.FIT_XY)

View 영역을 가득 채워서 보여줌(비율유지 안함)

(표 출처 : http://blog.naver.com/PostView.nhn?blogId=a1178626&logNo=150162250548)








도움이 되셨나요?

그럼 손가락을 눌러주세요:)

안드로이드 개발을 하다보면 Sdcard 또는 앱 데이타 폴더에 파일이 이미 있는지 확인해야 할 때가 있습니다. 간단한 코드로 파일의 유무를 쉽게 확인할 수 있습니다.


안드로이드 개발 - 파일(File) 유무 확인하기



  
//path 부분엔 파일 경로를 지정해주세요.
File files = new File(path);
      //파일 유무를 확인합니다.
 if(files.exists()==true) {
//파일이 있을시
} else {
//파일이 없을시
}








도움이 되셨나요?

그럼 손가락을 눌러주세요:)

안드로이드에서 Bitmap을 Sdcard 같은 저장장치에 파일로 저장할 필요성이 있을 때가 있습니다.

간단한 함수로 파일로 저장이 가능합니다.


안드로이드 개발 - 비트맵을 파일로 변환하기(Bitmap to file)


1. 아래와 같은 함수를 등록해줍니다.


 
// Bitmap to File
	public  void SaveBitmapToFileCache(Bitmap bitmap, String strFilePath,
			String filename) {

		File file = new File(strFilePath);

		// If no folders
		if (!file.exists()) {
			file.mkdirs();
			// Toast.makeText(this, "Success", Toast.LENGTH_SHORT).show();
		}

		File fileCacheItem = new File(strFilePath + filename);
		OutputStream out = null;

		try {
			fileCacheItem.createNewFile();
			out = new FileOutputStream(fileCacheItem);

			bitmap.compress(CompressFormat.JPEG, 100, out);
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			try {
				out.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}



2. 함수를 호출할 때에는 아래와 같이 호출합니다.(bitmap에는 비트맵, strFilePath에는 파일 경로, filename에는 파일 이름으로 사용할할 문자열을 지정해주면 됩니다.


SaveFileToFileCache(bitmap, strFilePath, filename);






도움이 되셨나요?

그럼 손가락을 눌러주세요:)

안드로이드 어플리케이션 개발을 할 때 주로 이클립스를 자주 사용하는데요, 기기를 컴퓨터에 연결하여 작동시켜보는 방법으로 앱 테스트를 많이 합니다.

그런데 잘 작동하지 못하고 설치 도중에 아래 사진과 같이 'Fail too install... timeout' 이 뜨면서 설치가 되질 않습니다.




주로 APK의 용량이 크거나 테스트 폰이 저사양일 경우에 이런 현상이 일어나며, Timeout 시간 설정을 바꿔주는것으로 해결할 수 있습니다.



안드로이드 개발 - 설치시 이클립스 Timeout 오류 해결하기


1. 사과 옆의 이클립스 클릭후 > Preferences > Android > DDMS > ADB Connection time out (ms)의 숫자를 기존보다  5~10초(5000~10000)정도 더 늘려줍니다.

(윈도우의 경우에는 Window > Preferences > Android > DDMS > ADB Connection time out (ms)에서 하시면 됩니다.)





위 방법대로 하면 빌드가 잘 돼서 실행되는걸 볼 수 있습니다. 만약 안된다면 시간을 더 늘려보세요.








도움이 되셨나요?

그럼 손가락을 눌러주세요:)



실제 안드로이드 개발을 진행을 할때에는 주로 애뮬레이터보다는 실제 기기를 사용합니다. 그런데 이클립스가 기기를 인식 못하면 난감합니다.




안드로이드 개발 - 이클립스(Eclipse)가 휴대폰을 인식하지 못하는 경우


1. USB 디버 깅 
실제로 안되는 원인의 대다수는 개발자 설정의 USB 디버깅을 잊어먹고 키지 못한 경우입니다.
기초적인 내용이지만 실수할 때가 많습니다.
설정 -> 개발자 설정에서 USB 디버깅을 키면 해결됩니다.

 


2. ADB

(1)먼저 Android SDK Manager를 열어 업데이트를 시도해보세요.


(2) 윈도우인 경우 - 장치관리자를 열어 ADB 디바이스를 인식하는지 확인하세요.


인식하지 못한 디바이스가 있다면 오른쪽 클릭 -> 드라이버 업데이트 -> 자동으로 검색으로 안된다면 컴퓨터에서 드라이버 소프트웨어 찾아보기를 한후 경로를  Android SDK 폴더\extras\google\usb_driver로 지정해주시면 됩니다.


이렇게 하면 왠만한 문제는 거의 다 해결됩니다.

도움이 되셨나요?
그럼 손가락을 눌러주세요.