한/영 전환 단축키

|

한/영 전환 단축키

Mac을 처음 사용하는 사람들은 한/영 전환을 어떻게 하는지 몰라서 당황하는 경우가 많습니다.

한/영 전환 단축키는 다음과 같습니다.

  • Control + Command
  • Sierra 이상에서는 Caps lock으로도 사용 가능

Estimote Beacon 스캔

|

안드로이드에서 Estimote Beacon을 스캔하는 간단한 예제 코드입니다.  더 자세한 정보는 여기를 참고하시면 됩니다.


SDK 다운로드

그리고 Estimote SDK는 여기(GitHub)에서 다운 받을 수 있습니다.


Dependency 추가

Android Studio 기준으로, 일단 build.gradle에 Estimote Beacon SDK에 대한 dependency를 추가합니다.


dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:23.0.1'

    // for Estimote SDK
    compile 'com.estimote:sdk:0.11.1@aar'
}


예제 코드

그런 다음, 다음과 같은 코드로 주위에 있는 Estimote Beacon들을 간단하게 스캔할 수 있습니다.

package snowdeer.sample.estimote;

import android.graphics.Bitmap;
import android.os.Handler;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;

import com.estimote.sdk.BeaconManager;
import com.estimote.sdk.EstimoteSDK;
import com.estimote.sdk.Nearable;
import com.estimote.sdk.SystemRequirementsChecker;
import com.estimote.sdk.connection.scanner.ConfigurableDevicesScanner;
import com.estimote.sdk.connection.scanner.DeviceType;

import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity {

  private static final String TAG = "snowdeer";
  private TextView mLogView;
  private StringBuilder mLogBuilder = new StringBuilder();
  private Handler mHandler = new Handler();

  private BeaconManager mBeaconManager;
  private ConfigurableDevicesScanner mDeviceScanner;

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

    findViewById(R.id.btn_start_scan).setOnClickListener(mOnClickListener);
    findViewById(R.id.btn_stop_scan).setOnClickListener(mOnClickListener);
    findViewById(R.id.btn_clear_log).setOnClickListener(mOnClickListener);

    mLogView = (TextView) findViewById(R.id.log);
    mLogBuilder.setLength(0);

    EstimoteSDK.initialize(getApplicationContext(),
        "estimotebeaconsample-ivb", "45f6fc31fd613624b0f24df41b121db6");

    mBeaconManager = new BeaconManager(getApplicationContext());
    mDeviceScanner = new ConfigurableDevicesScanner(getApplicationContext());
  }

  @Override
  protected void onResume() {
    super.onResume();
    SystemRequirementsChecker.checkWithDefaultDialogs(this);
  }

  @Override
  protected void onDestroy() {
    super.onDestroy();
  }

  private void log(String message) {
    mLogBuilder.append("\n");
    mLogBuilder.append(message);
    mHandler.post(new Runnable() {
      @Override
      public void run() {
        if(mLogView != null) {
          mLogView.setText(mLogBuilder.toString());
        }
      }
    });
  }

  private View.OnClickListener mOnClickListener = new View.OnClickListener() {
    @Override
    public void onClick(View view) {
      switch(view.getId()) {
        case R.id.btn_start_scan:
          startToScan();
          break;
        case R.id.btn_stop_scan:
          stopToScan();
          break;
        case R.id.btn_clear_log:
          clearLog();
          break;
      }
    }
  };

  private void startToScan() {
    log("start to scan beacons()");

    mDeviceScanner.setOwnDevicesFiltering(false);
    ArrayList<DeviceType> deviceTypeList = new ArrayList<DeviceType>();
    deviceTypeList.add(DeviceType.LOCATION_BEACON);
    deviceTypeList.add(DeviceType.NEARABLE);
    deviceTypeList.add(DeviceType.PROXIMITY_BEACON);
    mDeviceScanner.setDeviceTypes(deviceTypeList);
    mDeviceScanner.scanForDevices(
        new ConfigurableDevicesScanner.ScannerCallback() {

          @Override
          public void onDevicesFound(
              List<ConfigurableDevicesScanner.ScanResultItem> devices) {
            log("onDevicesFound : " + devices.size());
            for(int i = 0; i < devices.size(); i++) {
              ConfigurableDevicesScanner.ScanResultItem item = devices.get(i);
              log((i + 1) + ". Device ID : " + item.device.deviceId);
              log("  - Device Type : " + item.device.type);
              log("  - RSSI : " + item.rssi);
            }

            log("");
          }
        });
  }

  private void stopToScan() {
    log("stop to scan beacons()");
    mDeviceScanner.stopScanning();
  }

  private void clearLog() {
    mLogBuilder.setLength(0);
    mLogView.setText("");
  }
}

Wi-FI를 이용한 ADB 연결

|

안드로이드 개발을 할 때 ADB 연결은 필수입니다. 보통은 케이블을 이용하면 되는데, 케이블 연결이 번거로운 경우에는 케이블 연결없이 Wi-Fi 기반으로 ADB 연결을 할 수 있습니다.

이런 경우가 얼마냐 있을까 싶지만, USB 연결 포트가 1개밖에 없는 노트북이 종종 있습니다. 대표적으로 제가 쓰고 있는 ‘갤럭시탭 프로 S’를 들 수 있습니다. USB-C 포트가 1개뿐이라 충전 케이블을 꽂으면 다른 케이블을 꽂을 수 없습니다. 그렇다고 USB 허브를 매번 들고 다닐 수도 없는 일이라 개발용으로 쓰기엔 난감합니다.

물론, Wi-Fi 기반으로 연결하긴 하지만 최초에 한 번은 케이블을 이용해서 연결을 해줘야 합니다.


설정 방법

  • 먼저 노트북과 스마트폰을 동일 공유기에 접속시켜 줍니다.
  • 스마트폰을 USB 케이블을 이용해서 노트북에 연결합니다.
  • cmd 명령어를 통해서 다음과 같이 실행합니다.
adb tcpip 5555
restarting in TCP mode port: 5555


  • 그리고 다음 명령어를 통해서 스마트폰의 IP Address를 알아냅니다.
adb shell ifconfig
  • 이제 끝났습니다. 케이블 연결을 해제해도 됩니다.
  • PC에서 스마트폰에 ADB 연결을 하기 위해서는 다음 명령어를 입력하면 됩니다.
adb connect [IP Address]:5555
ex) adb connect 192.168.0.140:5555
  • 현재 ADB 연결이 잘 되어 있는지 확인하기 위해서는 다음 명령어를 입력하면 됩니다.
C:>adb devices
List of devices attached
192.168.0.140:5555 device

스크린 캡쳐 단축키

|

스크린 캡쳐

Mac에서 스크린 캡쳐 단축키는 키보드 위에 표시되어 있지 않습니다. 단축키를 공부해야 스크린 캡쳐를 할 수 있습니다.

스크린 캡쳐 단축키는 다음과 같습니다.

  • 전체 화면 캡쳐 : Command + Shift + 3
  • 부분 화면 캡쳐 : Command + Shift + 4 (화면에 십자가 영역이 나오면 드래그해서 영역 지정하면 됨)
  • 창(Window) 캡쳐 : Command + Shift + 4 이후 십자가가 나오면 캡쳐를 원하는 창 위에서 Space 누르면 됨

Windows 10 - 가상 데스크탑

|

Windows 10 가상 데스크탑 사용 방법

가상 데스크탑은 마치 모니터를 여러 개 쓰는 것처럼 바탕 화면을 여러 개 쓸 수 있는 기능으로 Windows 10에서 새로 추가된 기능입니다.

가상 데스크탑은 윈도우 작업 줄에 있는

image

버튼을 눌러 실행할 수 있습니다. 이 버튼을 누르게 되면

image

와 같은 화면이 나오며, 오른쪽 아래에 있는 ‘새 데스크톱’을 누르게 되면 가상 데스크탑이 하나 추가가 됩니다.


가상 데스크탑 단축키

가상 데스크탑 전환은 키보드 단축키를 사용하면 편리합니다.

가상 데스크탑 키보드 단축키

  • 가상 데스크탑 태스크 바 : Window + Tab
  • 가상 데스크탑 생성 : Ctrl + Window + D
  • 가상 데스크탑 삭제 : Ctrl + Window + F4
  • 가상 데스크탑 전환 : Ctrl + Window + ( 또는 )


Windows 7 이하에서의 가상 데스크탑

Windows 10에서는 가상 데스크탑 기능이 기본 탑재되어 손쉽게 사용할 수 있지만, Windows 7 이하에서는 별도의 어플을 설치해야 합니다. MS에서 직접 배포하고 있는 Desktop이라는 어플이며, 여기에서 다운받을 수 있습니다.

설치해서 실행하게 되면

image

와 같은 화면이 나오며 가상 데스크탑 전환을 위한 단축키 설정을 할 수 있습니다. (ex. Alt + 숫자 키로 전환)

Windows 10에서의 가상 데스크탑처럼 부드러운 전환 효과라던지 자연스러움은 없지만, 무난히 쓸만한 것 같습니다.