기본 콘텐츠로 건너뛰기

2014의 게시물 표시

Android, Timer

        TimerTask timerTask = new TimerTask() {             @Override             public void run() {             }         };         Timer timer = new Timer("MyTimer");         timer.scheduleAtFixedRate(timerTask, 100, 100);         // after 100 ms, interval 10ms

Android, JNI, NDK, Memo

******* Eclipse --- no error check, cpp file Eclipse > Preferences > C/C++ > Code Analysis uncheck "Syntax and symantic Errors" --- build http://dsnight.tistory.com/entry/%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C-Eclipse%EC%97%90%EC%84%9C-NDKbuild-%ED%95%98%EA%B8%B0

Android, HLS, m3u8 再生

VideoView videoview = (VideoView)findViewById(R.id.myvideoview);       videoview.setMediaController(new MediaController(this)); videoview.setVideoURI(Uri.parse("[video url].m3u8")); videoview.requestFocus(); videoview.setOnPreparedListener(new OnPreparedListener() {         public void onPrepared(MediaPlayer mp) {             mp.start();         }     }); ref :  http://stackoverflow.com/questions/12761499/streaming-m3u8-playlist-on-android-4-0-3

Android, CSV, Comma-Sepereted Values, StringTokenizer

String str = "1, 2, 3"; StringTokenizer st = new StringTokenizer(str); if (st.hasMoreTokens()){      String token = st.nextToken();     //1 } if (st.hasMoreTokens()){      String token = st.nextToken();     //2 } if (st.hasMoreTokens()){      String token = st.nextToken();     //3 } if (st.hasMoreTokens()){     // false }

Android, 서명이 충돌하는 같은 이름의 기존 패키지가 이미 설치되어 있습니다.

Nexus 7 1세대 4.4 Kitkat 앱이 설치되지 않습니다. 서명이 충돌하는 같은 이름의 기존 패키지가 이미 설치되어 있습니다. 위의 증상으로 apk로 앱이 설치되지 않음. 설치되어있는 앱을 지우고 다시 설치하려고 해도 되지 않음. 구글 플레이에서 설치할때도 비활성->활성되는듯 설치 딜레이가 없었음. 앱을 삭제할시 해당사용자에서 링크만 삭제되는 듯이 보임. 어플리케이션 리스트의 가장밑에 설치하려는 앱의 아이콘을 발견.(삭제됨이라고 표시) 그 앱의 메뉴를 열어 "모든 사용자에서 삭제"를 선택하면 앱의 아이콘이 사라진다. 그후 apk를 설치하면 정상으로 진행.

Android, SharedPreferences, put data with same name

SharedPreferences share = context.getSharedPreferences( "share1" , Context. MODE_PRIVATE ); SharedPreferences.Editor edit = share.edit(); edit.putInt(PREFS_NAME, 1); edit.commit(); int intdata  = share.getInt(PREFS_NAME, 0); //intdata = 1 edit.putString(PREFS_NAME, "new String" ); edit.commit(); String strdata = share.getString(PREFS_NAME, "" ); //strdata = "new String" intdata = share.getInt(PREFS_NAME, 0); //java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer

Android, sqlite simple sample

String dbName = "test.db" ; int dbMode = Context. MODE_PRIVATE ; SQLiteDatabase db = context.openOrCreateDatabase(dbName, dbMode, null ); String sql = null ; try { sql = "DROP TABLE table1;" ; db.execSQL(sql); Log. d ( "sqliteTest" , "drop table" ); } catch (SQLException e){ Log. e ( "sqliteTest" , e.toString()); } try { sql = "CREATE TABLE table1 (id text primary key, name text);" ; db.execSQL(sql); Log. d ( "sqliteTest" , "create table" ); } catch (SQLException e){ Log. e ( "sqliteTest" , e.toString()); } try { ContentValues initialValues = new ContentValues(); initialValues.put( "id" , "1" ); initialValues.put( "name" , "one" ); db.insert( "table1" , null , initialValues);

Android, sqlite file

1. database file -> accessible folder adb shell "run-as yourpackagename cat databases/yourdbfilename.db > /sdcard/tmpfolder/tmpfilename" 2. execute sqlite3 sqlite3 tmpfilename 3. cmd .tables .schema ref. http://hrhdev.tistory.com/133 http://elfinlas.tistory.com/239

Android, get page contents with Post method and parameters

DownloadWebPageTask task = new DownloadWebPageTask();   task.execute( "http://yahoo.com" , "param1" , "value1" );  private class DownloadWebPageTask extends AsyncTask<String, Void, String> {         @Override         protected String doInBackground(String... urls) {         // url , param1Name, param1Value,...                  if (urls. length < 3) return null ;                  String url = urls[0];                  HttpClient client = new DefaultHttpClient();              HttpPost post = new HttpPost(url);     List<NameValuePair> pairs = new ArrayList<NameValuePair>();          pairs.add( new BasicNameValuePair(urls[1], urls[2]));          String resString = null ;     try {     post.setEntity( new UrlEncodedFormEntity(pairs));          HttpResponse res = client.execute(post);          HttpEntity entity = res.getEntity();        

mac, shell script, rename files, 파일이름 일괄변경

일괄 변경 ls | sed "s/\(.*\)변경전파일명의문자열\(.*\)/mv '&' '\1변경후파일명의문자열\2' /" |sh ex ) png파일의 끝에 _thumb를 붙임 a.png → a_thumb.png ls | sed "s/\(.*\).png\(.*\)/mv '&' '\1_thumb.png\2' /" |sh 일괄변경 & 일괄복사 *.png -> *_thumb.png 같은 디렉토리에 일괄복사 find ./ -name "*.png" | sed -e 'p' -e 's/.png/_thumb.png/g' | xargs -n 2 cp *.png -> *_thumb.png 로 이름 바꿈 find ./ -name "*.png" | sed -e 'p' -e 's/.png/_thumb.png/g' | xargs -n 2 mv  

Android, LayoutInflater, get object from xml

현재의 컨텐츠 레이아웃에서 콤포넌트 받아오기 Button btn = (Button)findViewById(R.id. button1 ); 다른 레이아웃에서 받아오기         LayoutInflater factory = LayoutInflater.from(this);         View main2 = factory.inflate(R.layout.main2 , null);         Button btn = ( Button )main2.findViewById( R.id.btn );

Android, OpenGL es, simple source

[Android] 3D API, OpenGL ES - 1 : 초기화  http://www.gisdeveloper.co.kr/entry/Android-3D-API-OpenGL-ES-%EC%B4%88%EA%B8%B0%ED%99%94 [Android] 3D API, OpenGL ES - 2 : 폴리곤 렌더링  http://www.gisdeveloper.co.kr/entry/Android-3D-API-OpenGL-ES-2-%ED%8F%B4%EB%A6%AC%EA%B3%A4-%EB%A0%8C%EB%8D%94%EB%A7%81 src https://github.com/devjyon/OpenGLTest1

JavaScript, detect browser is chrome

<script> function click1(){  alert('click1');      if (navigator.userAgent.match(/Android/)) {   alert ('Android');          if (navigator.userAgent.match(/Chrome/)) {    alert('chrome');           } else {    alert('browser is not chrome');          }       }else{ alert('OS is not Android');       } } </script> <button onclick="click1()">Click me</button>

Android, FLAG_ACTIVITY, intent clear stack

액티비티A가 루트, 액티비티B, C로 이동할수 있을 때, B가 현재 액티비티인 상태에서 백그라운드일 때 URL Scheme로 C로 이동(stack : A / B -> A /C) 시키고 싶었으나, x launchMode를 singleInstance로 하면 B가 액티브인채로 앱이 Resume. x launchMode : singleTask일때는 기대한 움직임이었으나, Back버튼으로 C -> B -> A x launchMode : singleTask + FLAG_ACTIVITY_CLEAR_TOP을 하면 Back버튼시, C -> A -> B -> A * launchMode : singleTask + FLAG_ACTIVITY_NEW_TASK | FLAG_ACTIVITY_CLEAR_TASK 로 해결. http://tips.androidhive.info/2013/10/how-to-clear-all-activity-stack-in-android/

Android, URL Scheme

Browser : Link click *data from URL Scheme -> Intent.getData -> uri -> uri.getQueryParameter("attribute name") -> String appname://host1?a=11 uri.getScheme() : appname uri.getHost() : host1 uri.getQueryParameter("a") : 11 http://stackoverflow.com/questions/19045980/receiving-data-for-custom-url-scheme-in-android -------------------------------- appname://aaaa/bbbb uri.getLastPathSegment() : bbbb

Android, Alert의 Button을 눌러 Event Handling

                final Handler handler = new Handler(); AlertDialog.Builder alert =  new AlertDialog.Builder(context); alert.setPositiveButton(“Button”),                 new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); //doAfter is Runnable handler.post(doAfter); return; } });

Android, Device Screen Size

WindowManager wm = (WindowManager) context.getSystemService(Context. WINDOW_SERVICE ); Display display = wm.getDefaultDisplay(); Point size = new Point(); display.getSize(size); *********************************************************************** DisplayMetrics displaymetrics = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(displaymetrics); int height = displaymetrics.heightPixels; int width = displaymetrics. widthPixels ; ref :  http://stackoverflow.com/questions/4743116/get-screen-width-and-height

Android, Thread once

       new Thread( new Runnable() {             public void run() {             }              }).start(); ////////////////////////  with delay ref :  http://stackoverflow.com/questions/3072173/how-to-call-a-method-after-a-delay-in-android final Handler handler = new Handler (); handler . postDelayed ( new Runnable () { @Override public void run () { //Do something after 100ms } }, 100 );

Android, UI 갱신, Error : Only the original thread that created...

[Android] UI 갱신, Error : Only the original thread that created... Android   2012/08/17 11:39 UI Thread 이외에서 UI를 갱신하려고 하면 CalledFromWrongThreadException:Only the original thread that created a view hierarchy can touch its views. 라는 문구를 보게 된다. Handler UI의 권한이 있는 Thread의 핸들러에 메시지를 보낸다. Thread + Handler 조합으로 연속적인 갱신이 가능. public final Handler handler = new Handler{ @Override public   void  handleMessage(Message msg) { //UI 갱신 } } 외부에서 xxx.handler.sendEmptyMessage(); Activity.runOnUiThread UI 갱신 권한이 있는 스레드의 인스턴스를 얻을수 있다면 AActivity. this .runOnUiThread( new  Runnable(){ public   void  run(){ AActivity. this .xxxx.setText("xxxx"); }} ); Handler.post 사용 Handler handler = new Handler(); ... handler.post( new Runnable( public void run(){ //UI 갱신 } ) ); 그 외의 방법도 있다고 한다.  (미확인) View.post(Runnable) View.postDelayed(Runnable, long)

Android, Button, set TouchDown image, 버튼 ON/OFF 이미지 설정

btn.xml *************************************************************** <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android">     <item         android:state_pressed="true"         android:drawable="@drawable/btn_01_on" />     <item         android:state_pressed="false"         android:drawable="@drawable/btn_01_off" /> </selector> *************************************************************** 버튼의 이미지에는 btn.xml을 지정하면 된다.

Android, NSUserDefaults가 그립다

import android.content.Context; import android.content.SharedPreferences; public class UserDefaults { SharedPreferences preferences ;   public static UserDefaults getInstance(Context context){     UserDefaults instance = new UserDefaults();     instance. preferences = context.getSharedPreferences( "MyPreferences" , Context. MODE_PRIVATE );         return instance;     }     public void setString(String key, String value){         SharedPreferences.Editor editor = preferences .edit();         editor.putString(key, value);         editor.commit();     }     public String getString(String key){         return preferences .getString(key, "" );     } }