Visual Studio에서 안드로이드 플랫폼에 프로그래밍을 할 수 있도록 지원해주는 부분이 있다.


 그래서, 그걸 이용할려고 한다.


 ANT와 Grandle로 나뉘어져 있는데.

 빌드 시스템을 어떻게 사용할 것인가에 나뉘어져 있다.


 참고로 Grandle은 Android Studio에서도 사용되는 방식이다.

 참조 : http://codedragon.tistory.com/1322


 필자는 Android Studio에서 설정한 소스를 그대로 사용하고 싶은데, 제대로 설정이 안되는 것인지.


 원래, 소스를 제대로 불러오지 못하는 문제점이 있다.(심지어 R클래스도 자동으로 제작이 안되어지는거 보니깐, 아직까진 옮기기에는 힘이 드는 것일지도...)


 사용하면서 알아봐야 될것 같다.(소스 상에서 소스를 생성하는 형태를 취하고 있다.)


 먼저 그런것은 둘째치고, 안드로이드 소스를 짜보자.

 


 먼저 Visual C++에서 플랫폼 간 이라는 곳에서 Android가 존재한다.

 여기서 기존 응용 프로그램을 선택한 후에 처리한다.


 여기서 Grandle과 ANT로 나뉘는데, 그것은 위에 말한 것처럼 빌드의 차이이다.


 결과로 이렇게 예제소스가 나와준다.

 여기서 Android의 디자인을 쉽게 조작하지 않는다.


 프로그래머는 Android의 디자인을 소스상에서 각자의 객체를 생성해서 사용해야 될 것이다.



Posted by JunkMam
,

 예제 소스가 있긴 하지만, 예제 소스를 잘 못 찾았다.(보는 법도 몰랐다.) 그래서 외국 서버를 찾았다.


 이걸 그대로 복사 붙이기 하면, 플레이어에 연결이 된다.[각주:1]


 Android 프로젝트에서 AndroidManifast.xml에 추가 시켜줘야하는게 있다.


 필자는 다음과 같이 설정했다.


 

1
2
3
4
5
6
7
8
9
10
11
12
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"    package="com.example.sung.android" >
    <application        android:allowBackup="true"        android:icon="@mipmap/ic_launcher"        android:label="@string/app_name"        android:supportsRtl="true"        android:theme="@style/AppTheme" >
        <activity android:name=".Main_Activity" >
            <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.INTERNET" />
</manifest>
cs


 이렇게 처리하였다.


 여기서 중요한 것은 인터넷 통신을 위해서 권한을 하나 받아야된다.


 

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



 이것을 설정한 다음, Youtube API 라이브러리에서 제공하는 플레이어 XML을 추가한다.


1
2
3
4
5
6
    <com.google.android.youtube.player.YouTubePlayerView
        android:id="@+id/youtube_player"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="#fff"
        android:padding="5dp" />
cs


 이 다음에 소스를 짜면 된다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
import android.os.Bundle;
import android.widget.Toast;
import com.google.android.youtube.player.YouTubeBaseActivity;
import com.google.android.youtube.player.YouTubeInitializationResult;
import com.google.android.youtube.player.YouTubePlayer;
import com.google.android.youtube.player.YouTubePlayer.ErrorReason;
import com.google.android.youtube.player.YouTubePlayer.PlaybackEventListener;
import com.google.android.youtube.player.YouTubePlayer.PlayerStateChangeListener;
import com.google.android.youtube.player.YouTubePlayer.Provider;
import com.google.android.youtube.player.YouTubePlayerFragment;
import com.google.android.youtube.player.YouTubePlayerView;
public class Main_Activity extends YouTubeBaseActivity implements YouTubePlayer.OnInitializedListener {
    public static final String API_KEY = "";//사용자가 얻은 API Key을 입력하면 된다.(개발자 콘솔에 얻은 것.)
    
    //http://youtu.be/<VIDEO_ID>
    public static final String VIDEO_ID = "";
    private static final int RQS_ErrorDialog = 1;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        /** attaching layout xml **/
        setContentView(R.layout.activity_main_);
        /** Initializing YouTube player view **/
        YouTubePlayerView youTubePlayerView = (YouTubePlayerView) findViewById(R.id.youtube_player);
        youTubePlayerView.initialize(API_KEY, this);
    }
    @Override
    public void onInitializationFailure(Provider provider, YouTubeInitializationResult result) {
        if (result.isUserRecoverableError()) {
            result.getErrorDialog(this, RQS_ErrorDialog).show();
        } else {
            Toast.makeText(this,
                    "YouTubePlayer.onInitializationFailure(): " + result.toString(),
                    Toast.LENGTH_LONG).show();
        }
    }
    @Override
    public void onInitializationSuccess(Provider provider, YouTubePlayer player, boolean wasRestored) {
        /** add listeners to YouTubePlayer instance **/
        player.setPlayerStateChangeListener(playerStateChangeListener);
        player.setPlaybackEventListener(playbackEventListener);
        /** Start buffering **/
        if (!wasRestored) {
            player.cueVideo(VIDEO_ID);
        }
    }
    private PlaybackEventListener playbackEventListener = new PlaybackEventListener() {
        @Override
        public void onBuffering(boolean arg0) {
        }
        @Override
        public void onPaused() {
        }
        @Override
        public void onPlaying() {
        }
        @Override
        public void onSeekTo(int arg0) {
        }
        @Override
        public void onStopped() {
        }
    };
    private PlayerStateChangeListener playerStateChangeListener = new PlayerStateChangeListener() {
        @Override
        public void onAdStarted() {
        }
        @Override
        public void onError(ErrorReason arg0) {
        }
        @Override
        public void onLoaded(String arg0) {
        }
        @Override
        public void onLoading() {
        }
        @Override
        public void onVideoEnded() {
        }
        @Override
        public void onVideoStarted() {
        }
    };
}
cs


 여기서 Android 버전에 따라서 바뀐 것인지 모르겠지만, 초기화 작업에서 오류가 뜨는 걸 확인 되었다.

 그래서, 다음과 같은 소스가 적용 된 것이다.

1
2
3
4
5
6
7
8
9
10
    @Override
    public void onInitializationFailure(Provider provider, YouTubeInitializationResult result) {
        if (result.isUserRecoverableError()) {
            result.getErrorDialog(this, RQS_ErrorDialog).show();
        } else {
            Toast.makeText(this,
                    "YouTubePlayer.onInitializationFailure(): " + result.toString(),
                    Toast.LENGTH_LONG).show();
        }
    }
cs


 제공한 사이트와 다른 점은 이것인데, 초기화 작업이 잘못 되었을 경우.

 원래, Youtube에 들어가서 작업 할 수 있도록 제작한 것이다.


 전체 구조에선


 onInitializationFailure()는 초기화 하는 도중에 오류가나서 초기화가 제대로 안될 경우이다. 이 경우는 Key가 문제가 있거나, 플레이어로 접속이 안되는 문제등 다양한 문제가 있을 경우 작동한다.


 onInitializationSuccess()는 초기화가 성공하면 작동되는 것이다. 여기서 player등의 초기화 작업등을 하는 것이다.

 즉, YouTube의 연결에서 사용되는 장치들을 연결 및 설정하는 것이다.


 여기서 Player의 이벤트를 연결해서 처리하는 Listener을 연결되게 된다.

Posted by JunkMam
,



 Android Youtube API을 사용하기 위해선 구글에서 제공하는 서비스를 이용해야된다.


 서비스를 이용하기 위해선, Developer Console 에 들어가야된다.


 

 이렇게 되어 있는데에서 Youtube API에 있는 Youtube Data API을 열어야된다.


 페이지를 열게되면, 사용자 인증키를 만들어야된다.


 사용자 인증키를 만들기 위해선, JAVA에서 지원해주는 KeyTool이라는 프로그램을 사용해서 SHA-1 키를 얻어야된다.


 일단, 입력하기 위한 사이트를 찾으면 다음과 같다.


 

 여기 사이트에서 API키을 누르면, 다음과 같은 창이뜬다.



 여기서 Android키를 사용하면, 안드로이드 어플을 제작할 수 있게 된다.


여기서 이제, 안드로이드 패키지의 SHA-1 내용과 패키지 이름을 입력해야된다.


 KeyTool을 찾는게 오래 걸렸는데, JAVA 설치되어 있는 위치에서 bin에 존재한다.


 예을 들어서 그냥 JAVA을 설치한다고 가정한다면, C:/Programe File/JAVA/jdk/bin 에 keytools이 들어 있다.


 이 툴을 이용해서, keytool -list -v -keystore을 이용하면 된다.


 여기서 그림과 같이 mystore.keystore는 .android 폴더에 있는 파일을 이용해서 사용해야된다.


 .android는 기본적으로 C:/users/사용자명/에 .android 라는 폴더에 있으며, 여기서 debug.keystore 에 적용시키면, 뜨게 된다.

Posted by JunkMam
,

 Android Youtube을 제작할려고, 이런 기록을 남긴다.


 Google에서 Youtube API라고 하여, Youtube을 쉽게 연동할 수 있게 하는 장치가 있다.


 이걸 이용해서 안드로이드 Youtube API을 제공하고자 한다.


 먼저, Google 에서 제공하는 API 사이트에 들어가야 된다.[각주:1]


 사이트에 들어가서 다운로드에 가면, YouTubeAndroidPlayerApi-1.2.2.zip 라는 파일이 있다.


 이 파일을 다운 받은 후 라이브러리에 추가해야한다.


 압축을 풀면 다음과 같은 파일들이 존재하게 된다.


 

 docs는 API에 대한 책자 정보를 제공하고, libs는 Android Youtube 라이브러리가 들어가 있다.


 sample은 예제들이 들어가 있으니, 참조하면 도움이 될 것이다.


 먼저 적용하기 위해서 안드로이드 프로젝트를 만든 후.


 프로젝트 폴더의 libs 폴더에 들어가서 libs에 있는 내용을 복사한다.


 프로젝트 폴더 >> app >> libs 안에 라이브러리가 들어가 있어야된다.


 

 이렇게 들어가면 된다.


 이 후에 라이브러리를 제대로 처리하기 위해선, app을 수정해야 된다.


 app의 내용은 다음과 같게 된다.


 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
apply plugin: 'com.android.application'android {
    compileSdkVersion 23
    buildToolsVersion "23.0.2"
 
    defaultConfig {
        applicationId "com.example.sung.android"
        minSdkVersion 15
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
    }
 
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}
 
dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:23.1.0'
    compile files('libs/YouTubeAndroidPlayerApi.jar')
}
cs


 여기서 중요한건,

 compile files('libs/YouTubeAndroidPlayerApi.jar')


 이게 없으면 안된다.


 이렇게 하면, Youtube API을 추가 할 수 있게 된다.

  1. 검색 일자 : 2015-10-20 [본문으로]
Posted by JunkMam
,