노방의 염주앱 최초버전. 앱게시 취소결정을 했다.

1. 앱인증키를 잃어버렸다. 더이상 업데이트 불가...

2. 기능이 제대로 동작하지 않음. 염주알 굴리기가 안드로이드 최신버전에서는 동작하지 않음

3. 대체할 앱을 새로 만들어 올림. 구글 플레이 스토어에 '염주'로 검색시 노방이 만든 2개의 염주앱이 나타남.


결국 내리기로 결정을 하고 내리려는데

너무 오래된 버전인지 모르겠지만... 엡게시 취소버튼을 누르자

"저장하지 못했습니다"

아직 살고 싶은가보다.

구글에 메일을 써 봐야겠다.



728x90

Android cannot connect directly to the database server. Therefore we need to create a simple web service that will pass the requests to the database and will return the response.


--------------------------------------------------------------------------------

불편하게 왜 웹서버를 통해서 DB에 접근하나 싶어

DB접속모듈을 만들어서 바로 호출하려고 해 보니...


12-17 11:17:35.221: I/dalvikvm(2543): Could not find method javax.naming.Reference.get, referenced from method com.mysql.jdbc.ConnectionPropertiesImpl$ConnectionProperty.initializeFrom


등의 에러가 난다.. 쩝.


그래서 찾아보니 위와 같은 문구가 2012년도 게시글에 나온다...

"안드로이드는 DB서버에 직접접근이 안된다. 그래서 요청을 DB에 하고 응답을 받을 수 있는 간단한 웹서비스를 만들 필요가 있다" 라고 하네... 쩝.


출처 : http://stackoverflow.com/questions/12233145/connecting-to-mysql-from-android-with-jdbc



728x90

   

원문 : http://huammmm1.tistory.com/373


당췌 API쓰기가 왜이렇게 어려운 건지...

카톡을 사용하려면 앱키와 키해시가 있다.


앱키는 앱을 추가할 때 카톡API에서 생성되는것이고

키해시는 실제 소스에서 APK생성시에 만들어진다.


카톡 API에서 키해시등록을 하는 방법이 귀찮게 되어있는데

샘플App의 시작Activity에서 아래 method를 호출하면 로그캣에 찍힌다.


KakaoTalkLoginActivity에서

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setBackground(getResources().getDrawable(R.drawable.kakaotalk_sample_login_background));
        Log.d("KakaoTalkLoginActivity", "onCreate ");
        getAppKeyHash();// 호출
    }


//////// method 추가

private void getAppKeyHash() {
        try {
            PackageInfo info = getPackageManager().getPackageInfo(getPackageName(), PackageManager.GET_SIGNATURES);
            for (Signature signature : info.signatures) {
                MessageDigest md;
                md = MessageDigest.getInstance("SHA");
                md.update(signature.toByteArray());
                String something = new String(Base64.encode(md.digest(), 0));
                Log.d("Hash key", something);
            }
        } catch (Exception e) {
            // TODO Auto-generated catch block
            Log.e("name not found", e.toString());
        }
    }

728x90

몇 달전 카톡 API를 써보려 했을 때

그때는 친구목록이 나타나지 않았었다.

'이게 뭐야? 친구목록 없으면 어떻게 해?' 하며 진행을 하지 않았다.

이제는 친구목록이 나온댄다.


그래서 해 보려는데....

Eclipse에서 하려니 자꾸 뭔가 충돌이 난다.

구글에서도 gradle로 갈 예정이라고 하고 찾아보니 gradle 예제가 있길래 따라하기 위해 설치했다.


그런데... 카톡 키해시를 받기가 쉽지가 않구만...


카톡에서는

keytool -exportcert -alias <release_key_alias> -keystore <release_keystore_path> | openssl sha1 -binary | openssl base64
이렇게 치라고 했는데

안되는게
java classpath가 안잡혀있어서 직접
cd
c:\Java\jdk1.7.0_71\bin 으로 이동

그리고 openssl도 설치가 안되어 있어서 직접 다운(http://slproweb.com/products/Win32OpenSSL.html)받아 설치한 다음



c:\Java\jdk1.7.0_71\bin>keytool -exportcert -alias 키스토어명 -keystore 키스토어저장경로 | C:\OpenSSL-Win32\bin\openssl sha1 -binary | C:\
OpenSSL-Win32\bin\openssl base64


이렇게 하니까 키해시는 만들어졌다.

728x90

2011년 만든 염주 앱

업그레이드를 하려고 했더니... 키스토어 파일이 없네

그래서 새로 염주앱을 만들었는데 별로 이용하지 않네 ㅎ

확 내릴까 하고 생각하고 기념으로 캡쳐를 하다보니


처음 염주 만들 때의 생각

'염주는 세는기능만 있으면 되는거 아냐?'라고

누군가는 많은 기능 필요없이 그저 세는 기능만 필요할 수도 있겠다 싶어서 놔두기로 함.


여러가지 기능을 추가한 새로운 앱은

https://play.google.com/store/apps/details?id=com.nobang.rosary2free

요기에서 받아 사용하시길








728x90

자꾸 android content loader 0 와 함께 응답이 없어 구글로 많은 내용을 찾아본 결과 가장 확실한 것 같다. ㅎ



방법1: 커맨드 창에서 eclipse 폴더로 간 다음 "eclipse -clean"을 실행시킨다.

(start eclipse from command line"
run eclipse -clean
)


방법2: workspace 폴더로 간 다음 아래 경로로 가서 모든 프로젝트 정보를 지운다

\workspace\.metadata\.plugins\org.eclipse.core.resources\.projects
(

Go to your workspace directory \workspace\.metadata\.plugins\org.eclipse.core.resources\.projects and delete all the projects in there.
)


방법3: 
1. eclipse가 확실이 종료되었는지 확인한다. 작업관리자에 eclipse 항목이 있으면 kill 시킨다.

2. 사용자 폴더로 간다. (window의 경우 로그인한 사용자 경로를 찾는다)

3. .android 폴더로 간다.(숨겨진 폴더일 수 있다.)

4. cache 폴더안의 내용을 모두 지운다.

5. ddms.cfg 파일을 지운다.

6. eclipse를 

  1. Make sure that eclipse is not active. If it is active kill eclipse from the processes tab of the task manager
  2. Open %USERPROFILE%/ (You can locate this folder from desktop)
  3. Go to .android folder (This may be a hidden folder)
  4. Delete the folder "cache" which is located inside .android folder
  5. Delete the file ddms.cfg which is located inside .android folder
  6. Start eclipse
(나의 경우에는 3까지 하니까 성공했다)

방법4:
1. 아래 폴더를 삭제한다.
/workspace/.metadata/.plugins/org.eclipse.e4.workbench/workbench.xmi
(
Delete:
/workspace/.metadata/.plugins/org.eclipse.e4.workbench/workbench.xmi

)


원본 : http://kaparkx.blogspot.kr/2014/04/eclipse-hangs-at-android-sdk-content.html

728x90

sqlite에 Excel 파일 등을 import 할 때 문제는 csv에서 한글이 깨진다는 것이다.

운좋게 csv까지 한글이 깨지지 않더라도 sqlite에 다시 넣을 때에는 깨질 수 있다.

그런데... 가장 편한 방법은 파이어 폭스를 이용하는 것이다.

1. 파이어 폭스를 다운받는다.

2. 파이어 폭스를 실행한 뒤 추가기능에서 sqlite를 검색한다

"Sqlite Manager"를 설치한 뒤 실행한다.

CSV파일을 임포트하면 한글까지 완전히 sqlite로 떨어진다 호호홋.

728x90


PhoneGap에서 SQLITE를 사용하기 위한 설정이다. 구조는 이미지와 같으며

다음 순서로 기본 세팅을 한다.

1. AndroidManifest.xml
   : 권한 추가. 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

--전체

<?xml version="1.0" encoding="utf-8"?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

    package="com.nobang.phonegapsql"

    android:versionCode="1"

    android:versionName="1.0" >


    <uses-sdk

        android:minSdkVersion="16"

        android:targetSdkVersion="19" />


    <application

        android:allowBackup="true"

        android:icon="@drawable/ic_launcher"

        android:label="@string/app_name"

        android:theme="@style/AppTheme" >

        <activity

            android:name="com.nobang.phonegapsql.MainActivity"

            android:label="@string/app_name" >

            <intent-filter>

                <action android:name="android.intent.action.MAIN" />


                <category android:name="android.intent.category.LAUNCHER" />

            </intent-filter>

        </activity>

    </application>

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

</manifest>

2. /res/xml/config.xml
 : 폰갭 라이브러리 세팅을 하면 config.xml을 해당 위치에 복사하게 되는데 sqlite를 사용하려면 이것에 플러그인 설정을 추가해야한다. <plugins></plugins> 사이에 네가지를 추가한다.

<?xml version="1.0" encoding="UTF-8"?>

<widget xmlns     = "http://www.w3.org/ns/widgets"

        id        = "io.cordova.helloCordova"

        version   = "2.0.0">

<plugins>

        <plugin name="SQLitePlugin" value="org.pgsqlite.SQLitePlugin"/>

      <plugin name="App" value="org.apache.cordova.App"/>

      <plugin name="Geolocation" value="org.apache.cordova.GeoBroker"/>

      <plugin name="Device" value="org.apache.cordova.Device"/>

    </plugins>

</widget>

3. /src/org.pgsqlite/SQLitePlugin.java
   해당 파일을 그래도 사용한다. 내 프로젝트에서 사용하기때문에 패키지명을 바꿨더니 javascript에서 에러남.

4. /assets/www/js 아래에 cordova.js 와 SQLitePlugin.js 를 넣는다

5. index.html을 작성한다

  cordova.js와 SQLitePlugin.js를 import하고 
  문서가 onLoad될 때, db 및 table 생성, 조회를 한문장으로 처리

(필요시 각각 기능을 나누면 됨 )


<!DOCTYPE html>

<html>

  <head>

  <title>Lawnchair Spec</title>

  

    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no;" />

<meta charset="utf-8">


<script type="text/javascript" charset="utf-8" src="js/cordova.js"></script>

    <script type="text/javascript" charset="utf-8" src="js/SQLitePlugin.js"></script>

    

    <script type="text/javascript">

document.addEventListener("deviceready", onDeviceReady, false);


var db;

    function onDeviceReady() {

    // open database

db = window.sqlitePlugin.openDatabase({name: "MyDB"});

// create table;

db.transaction(function(tx) {

tx.executeSql('CREATE TABLE IF NOT EXISTS test_table (id integer primary key, data text, data_num integer)');

});

// insert data

db.transaction(function(tx) {

     tx.executeSql("INSERT INTO test_table (data, data_num) VALUES (?,?)", ["test", 100], function(tx, res) {

         console.log("insertId: " + res.insertId + " -- probably 1");

         console.log("rowsAffected: " + res.rowsAffected + " -- should be 1");

       });

});

// select data

db.transaction(function(tx) {

            tx.executeSql("select count(id) as cnt from test_table;", [], function(tx, res) {

              console.log("res.rows.length: " + res.rows.length + " -- should be 1");

              console.log("res.rows.item(0).cnt: " + res.rows.item(0).cnt + " -- should be 1");

            });

});

}

    

    </script>

  </head>

  <body>

  </body>

</html>



728x90

Google의 Map API를 쓰려고

프로젝트도 Google 로 생성했고 API Key도 받았는데

이상하게 계속 map activity를 찾을 수 없다고 나온다... 쩝.

manifest에도 uses-permission있는데 밑에다 놔 두었는데. ㅜㅜ

그러다 찾은 해결방안.

<application> 태그 사이에 있어야 한다는...

<application>
    <uses-library android:name="com.google.android.maps" />
    <activity ....></activity>
</application>

728x90
잘되던 프로그램에서 약간 수정을 했더니
"Only the original thread that created a view hierarchy can touch its views" 에러가 나면서 해당 동작이 수행이 되는건지...

결국 찾은 결론은.
Thread를 발생시켜 로직을 처리하는데
Runnable의 run Method에서 조회해 온 Data를
바로 TextView에 setText()하려다 위와같은 에러가 난 것 같다.

Handler에서 처리해 주니 정상적으로 작동한다.

실제 UI객체에 값을 넣은것은 여태까지 모두 Handler에서였는데....

private Runnable postRun = new Runnable(){
        public void run(){
            try{               
               
                ConnectionUtil cu = new ConnectionUtil();
                postView = cu.getPostView(gHref);
                //title.setText(postView.getTitle()) ---->> 기존에 시도했던 것에서 Exception, handler로 옮김
                Message msg = postHandler.obtainMessage();
                postHandler.sendMessage(msg);
                return;
            }catch(Exception e){
                Log.e("MEMORUN", e.getMessage());
                Message msg = postHandler.obtainMessage();           
                postHandler.sendMessage(msg);
            }       
           
        }
    };
    private Handler postHandler = new Handler(){
        public void handleMessage(Message msg){
                title.setText(postView.getTitle());
          
            loadingDialog.dismiss();
        }
    };
728x90
BLOG main image
"그게 뭐 어쨌다는 거냐?" 늘 누가 나에게 나에대한 말을할 때면 이말을 기억해라. by nobang

카테고리

nobang이야기 (1933)
Life With Gopro (7)
Life With Mini (79)
Diary (971)
너 그거 아니(do you know) (162)
난 그래 (159)
Study (290)
Cloud (26)
Go lang (30)
Front-end (27)
Device (3)
MAC (1)
Spring framework (49)
Java (13)
English (39)
SOA (0)
Idioms (7)
모르는거 (5)
WriteEnglish (10)
Android (56)
속지말자 (10)
Project (34)
Poem (15)
Song (0)
Photo (113)
낙서장 (45)
일정 (0)
C.A.P.i (2)
PodCast (0)
nobang (27)
고한친구들 (4)
recieve (0)
History (0)
android_app (2)

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

Total :
Today : Yesterday :