2014년 3월 28일 금요일

[안드로이드 앱 개발] 안드로이드 해상도별 아이콘 크기

안드로이드에서는 해상도를 고려하여 이미지 크기를 다르게 제작해야한다.

다음표를 보고 아이콘을 제작하면 해서

 해당 풀더에 같은 이름으로 넣어주변된다.



안드로이드 해상도별 아이콘 크기

1. drawable-mdpi    :   48  X 48  

비율: 원이미지 크기 X 1

2. drawable-hdpi     :   72  X 72  

비율: 원이미지 크기 X 1.5

3. drawable-xhdpi   :   96 X 96  

비율: 원이미지 크기 X 2

4. drawable-xxhdpi :   144 X 144  

원이미지 크기 X 3



2014년 3월 23일 일요일

[안드로이드 앱 개발] 안드로이드에서 웹서버 연동하는 방법[전송편]

안드로이드에서 웹서버 연동하는 방법에 대해 정리해보자.

1. 메니페스토 파일에 인터넷 사용권한을 추가한다.


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

2. 안드로이드에서 내부적으로 네트워크 사용에 대해 엄격히 제한하고
   있기 때문에를 사용하기 위해서는 강제로 네트워크를 사용하겠다는
   정책을 추가해주어야한다.
   StrictMode.ThreadPolicy policy 
    = new StrictMode.ThreadPolicy.Builder().permitAll().build();
   StrictMode.setThreadPolicy(policy);

3. 웹서버로 데이타를 전송하기 위해서는 비동기전송방식을 사용하는 것이 좋다. 왜냐하면 웹데이타를 가져올 때 문제가 발생하게 되면 앱 전체가 먹통될 수 있다. 따라서 이를 피하기위해서는 안전한 비동기방식을 사용하는 것이 좋다. 비동기 방식을 사용하기 위해서는 AsyncTask를 이용하여 데이타를 전송하여야한다.
class HttpPostAsyncTask extends AsyncTask<String, Integer, Long>
 {
 @Override
 protected Long doInBackground(String... params) {
  String username = params[0];
  String idvalue = params[1];
  String contact = params[2];
  String address = params[3];
  
  try {
   HttpClient client = new DefaultHttpClient();
   String postUrl = "http://test.mireene.com/receiveData.php";
   HttpPost post = new HttpPost(postUrl);
   
   //전송될 데이터 값
   List params2 = new ArrayList();
   params2.add(new BasicNameValuePair("username", username ));
   params2.add(new BasicNameValuePair("idvalue", idvalue ));
   params2.add(new BasicNameValuePair("contact", contact ));
   params2.add(new BasicNameValuePair("address", address ));

   UrlEncodedFormEntity ent = 
    new UrlEncodedFormEntity(params2,HTTP.UTF_8);
   post.setEntity(ent);
   HttpResponse responsePost = client.execute(post);
   HttpEntity resEntity = responsePost.getEntity();
   
   if (resEntity != null) {
    Log.w("Response", EntityUtils.toString(resEntity));
   }

  } catch (MalformedURLException e) {
   //
  } catch (IOException e) {
   //
  }
  return null;
 }
}

4. 마지막으로 전송하고자 하는 곳에서 인스턴스를 만들어 다음 로직을 사용하면 된다.
 String strCurDate=getCurrentDate();
 HttpPostAsyncTask task=new HttpPostAsyncTask();
 task.doInBackground(value1,value2,value3,value4);

2014년 3월 21일 금요일

[안드로이드 앱 개발] 안드로이드 에러메시지별 해결책


제가 개발하면서 접하는 에러메시지들을 정리해볼까합니다.

첫번째 에러메세지 :

No package identifier when getting value for resource number 0x00000001



TextView.setText()의 값에 String값 대신에 Int값 1을 넣었더니

다음과 같은 에러가 나오네요.

아무생각 없이 귀찮아서 숫자값을 setText에 그대로 넣었는데,

에러가 나서 생각해보니 resource id 값으로 인식을 해서 에러가 났더라구요.



[해결 방법에 대한 학습]

1. 숫자값(Int) => 문자값(String)으로 형변환하는 두가지 방법

=> String IntToString = Integer.toString(numberValue);

=> String IntToString = String.valueOf(numberValue);



2. 문자값(String) => 숫자값(Int)으로 형변환하는 방법



int StringToInt = Integer.parseInt(stringValue);