Eclipse에서 Oracle 데이터베이스 연결을 테스트 하기 위해 Data Source Explorer를 이용하는 방법에 대해 알아 봅니다프로젝트에서 환경 설정 값을 이용하여 테스트 하는 방법도 있지만 DB 접속을 위한 프로그램을 완성 하고 나서 디버깅을 해야만 데이터베이스에 접속이 되는지 아닌지 확인할 수 있지만 Data Source Explorer를 사용하면 설정 값만 사용하여 접속이 잘 되었는지 확인이 가능하고 테스트한 설정 값을 Project에 그대로 적용하기만 하면 별도로 접속 테스트 없이 DB 작업이 가능합니다.

 

먼저 이클립스 네비게이터 영역에 Data Source Explorer를 포함해 봅니다.

Window > Show View > Data Source Explorer

메뉴를 선택 합니다.



Eclipse Data Source Explorer Oracle


만약 Show View 메뉴에서 Data Source Explorer가 보이지 않는다면 하단의 Other...를 선택하여 팝업 메뉴 창을 오픈 합니다.


Eclipse Data Source Explorer Oracle


이곳에서 Data Source Explorer를 찾아 클릭 하면 됩니다.


Eclipse Data Source Explorer Oracle


그러면 좌측 네비게이터 창에 탭으로 추가된 것을 볼 수 있습니다이제 Database를 추가하기 위해 Database Connections에 마우스를 대고 우측 버튼 클릭을 합니다.


Eclipse Data Source Explorer Oracle


팝업 메뉴에서 New...를 선택해 줍니다.


Eclipse Data Source Explorer Oracle


Oracle을 사용하려고 하기 때문에 Oracle을 선택 하고 Name은 임의대로 입력 해도 됩니다이름을 입력 했다면 Next 버튼을 클릭 합니다.


Eclipse Data Source Explorer Oracle


아직 연결을 위한 드라이버가 하나도 생성되어 있지 않아 콤보박스에 선택을 할 수 없고 Drivers 입력란 우측에 있는 원안의 별표를 클릭 합니다.


Eclipse Data Source Explorer Oracle


Name/Type 탭에서 사용하려는 오라클 버전을 선택 합니다저는 사용하려는 버전이 11g이므로11을 선택 했습니다다음으로 JAR List 탭을 선택 합니다.


Eclipse Data Source Explorer Oracle


기본값이 설정되어 있지만 자신이 설치한 오라클에 적합한 jar 파일을 선택해야 합니다. 저는 11g XE 버전을 사용 중 이고 Add JAR/Zip... 버튼을 클릭해서 설치한 oracle 폴더로 이동 해보면

 

C:\oraclexe\app\oracle\product\11.2.0\server\jdbc\lib

 

이 폴더에 드라이버 파일이 있습니다


Eclipse Data Source Explorer Oracle


여기서는 ojdbc6.jar를 선택 합니다.  그리고 기존에 있던 ojdbc14.jar는 Remove JAR/Zip 버튼을 클릭하여 리스트에서 삭제처리 합니다.


Eclipse Data Source Explorer Oracle


이제 OK 버튼이 활성화 되어 클릭 할 수 있습니다. 클릭 하면 profile 입력 창이 보입니다.


Eclipse Data Source Explorer Oracle


database에 접속을 위한 정보를 입력하고 Test Connection 버튼을 클릭하여 접속 테스트를 진행 합니다.


Eclipse Data Source Explorer Oracle


설정 값에 이상이 없고 연결도 잘 되었습니다. Finish 버튼을 클릭하여 연결 테스트를 종료 합니다만일 설정된 정보를 확인하려면 Next 버튼을 클릭하면 됩니다.


Eclipse Data Source Explorer Oracle


현재 설정된 상세 정보를 볼 수 있고 수정이 필요하면 Back 버튼으로 수정을 하고 테스트를 종료 하려면 Finish 버튼을 클릭 합니다.


Eclipse Data Source Explorer Oracle


데이터베이스 접속 테스트가 성공 하였으니 접속 정보를 위와 같이 프로젝트 설정에 사용하면 DB 접속은 오류 없이 진행 됩니다.


- copy coding -



1. 진동 함수

 

진동 테스트는 무척 단순합니다.

 

진동을 일으키는 방법은 3가지가 있습니다.

 

첫째는 정해진 시간 만큼 한번 작동시키기

 

둘쨰는 정해진 패턴으로 한번 작동 시키기

 

마지막 세번째는 정해진 패턴으로 반복 작동 시키기


입니다.

 

모두 vibrate( ) 함수를 사용하는데 어떤 parameter 를 넘겨 주느냐에 따라

작동법이 달라 집니다.

 

첫번째 한번 작동은 param으로 milliseconds를 넘겨 줍니다.

   vibrate(1000);  // 10001초 입니다.

 

두번째와 세번째는 정해진 패턴의 longmilliseconds의 배열을 넘겨 줍니다.


배열의 형태는

long[] vloop = {0, 500, 100, 500, 100,….}; //5000.5초 입니다.

이고


배열 값의 의미는 {무진동 시간, 진동 시간, 무진동 시간, 진동 시간, ……}

배열 이므로 원하는 만큼 원하는 숫자를 기입하면 됩니다.


그리고 두번째 param에 따라 반복 여부가 결정 됩니다.


-1 이면 1회 진동, 0이상이면 반복 진동입니다.

vibrate(패턴, -1);   //1회 패턴 진동

vibrate(패턴, 0이상); //패턴 반복 진동


그런데 여기서 반복 진동도 2가지 종류로 나누어 집니다.

물론 핸드폰마다 조금씩 다른데, 정상적으로(동일 패턴) 무한 반복하는 것도 있습니다.


함수 사용

 진동 방식

 진동 형태

 vibrate(패턴, -1);

 패턴 1회 진동

 패턴 시간씩 진동/ 종료

 vibrate(패턴, 0);

 패턴 반복 진동

 패턴 시간씩 진동/ 패턴 시간씩 진동

 vibrate(패턴, 1);

 패턴 반복 진동

 패턴 시간씩 진동/ 짧은 시간씩 진동

 vibrate(패턴, 2);

 패턴 반복 진동

 패턴 시간씩 진동/ 패턴 시간씩 진동

 vibrate(패턴, 3);

 패턴 반복 진동

 패턴 시간씩 진동/ 짧은 시간씩 진동

 vibrate(패턴, 4);

 패턴 반복 진동

 패턴 시간씩 진동/ 패턴 시간씩 진동

 ...

  ...

  ...


이런 진동 형태가 반복이 되는데


0, 2, 4, … 짝수의 값은 패턴에 기입한 시간의 패턴이 무한 반복이 되지만


1, 3, 5,… 홀수 값일 경우에는 최초에만 정해진 시간 패턴으로 진동을 하고

그 다음 부터는 매우 짧게 틱, , 틱 하는 정도로만 진동을 합니다.

 


2. 진동 테스트 프로그램

 

2.1 진동 사용 허가


핸드폰의 진동자를 사용하기 위해서는 사용허가를 해야 합니다.


AndroidManifest.xmlpermission을 추가 합니다.


<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.desk.vibrator">

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

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>


2.2 Layout 작성

 

기능이 단순해서 vibrate( ) 함수의 parameter 별로 버튼을 만들었습니다.


[1], [패턴 1], [패턴 반복], [종료]


<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="8dp"
        android:layout_marginLeft="8dp"
        android:layout_marginTop="8dp"
        android:layout_marginEnd="8dp"
        android:layout_marginRight="8dp"
        android:layout_marginBottom="8dp"
        android:text="1초"
        app:layout_constraintBottom_toTopOf="@+id/button2"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.621" />

    <Button
        android:id="@+id/button2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="8dp"
        android:layout_marginLeft="8dp"
        android:layout_marginEnd="8dp"
        android:layout_marginRight="8dp"
        android:layout_marginBottom="48dp"
        android:text="패턴"
        app:layout_constraintBottom_toTopOf="@+id/button3"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent" />

    <Button
        android:id="@+id/button3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="8dp"
        android:layout_marginLeft="8dp"
        android:layout_marginEnd="8dp"
        android:layout_marginRight="8dp"
        android:layout_marginBottom="48dp"
        android:text="반복"
        app:layout_constraintBottom_toTopOf="@+id/button4"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent" />

    <Button
        android:id="@+id/button4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="8dp"
        android:layout_marginLeft="8dp"
        android:layout_marginEnd="8dp"
        android:layout_marginRight="8dp"
        android:layout_marginBottom="96dp"
        android:text="종료"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent" />

</android.support.constraint.ConstraintLayout>


 

2.3 Main Source

 

Vibrator를 선언하고 버튼을 눌러 진동을 테스트 합니다.

 

추가로 바탕을 터치해도 진동이 되도록 했습니다.


@Override

    public boolean onTouchEvent(MotionEvent event) { }


단순해서 머 더 설명할게 없습니다.


package com.example.desk.vibrator;

import android.content.Context;
import android.os.Vibrator;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Button;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Button btn1 = (Button)findViewById(R.id.button);
        Button btn2 = (Button)findViewById(R.id.button2);
        Button btn3 = (Button)findViewById(R.id.button3);
        Button btn4 = (Button)findViewById(R.id.button4);
        btn1.setOnClickListener(this);
        btn2.setOnClickListener(this);
        btn3.setOnClickListener(this);
        btn4.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        Vibrator vibrator = (Vibrator)getSystemService(Context.VIBRATOR_SERVICE);
        long[] vloop = {0, 500, 100, 500, 100, 500, 100};
        if(v.getId() == R.id.button) {
            vibrator.vibrate(1000);  //1초 작동
        } else if(v.getId() == R.id.button2) {
            vibrator.vibrate(vloop, -1); //패턴 1회 작동
        } else if(v.getId() == R.id.button3) {
            vibrator.vibrate(vloop, 0); //패턴 반복
        } else if(v.getId() == R.id.button4) {
            vibrator.cancel();
        }
    }

    @Override
    public boolean onTouchEvent(MotionEvent event) {
        int action = event.getAction();
        final Vibrator vibrator = (Vibrator)getSystemService(Context.VIBRATOR_SERVICE);
        switch(action) {
            case MotionEvent.ACTION_DOWN :    //화면을 터치했을때 이벤트
                vibrator.vibrate(new long[] {0,100}, 0);  //계속 진동
                break;
            case MotionEvent.ACTION_UP :      //화면을 터치했다 땠을때 이벤트
                vibrator.cancel();  //진동 취소
                break;
            case MotionEvent.ACTION_MOVE :    //화면을 터치하고 이동할때 이벤트
                vibrator.vibrate(new long[] {0,100}, 0);  //계속 진동
                break;
        }
        return super.onTouchEvent(event);
    }
}



3. 결과

 


3.1 결과 화면


버튼과 바탕화면을 클릭 또는 이동 하면서 테스트 하세요.


android vibrator sensor


3.2 Source Code

 

 

Vibrator.7z



3.3 APK File


Vibrator.apk


- copy coding -


1

+ Recent posts