ȸ¿ø°¡ÀԡžÆÀ̵ð/ºñ¹øã±â
ȨÀ¸·Î

[android] ¹Ìµð¾î Ç÷¹À̾î·Î ¿Àµð¿À ºñµð¿À Àç»ýÇϱâ
7³â Àü
ÀÌ »ùÇüҽº´Â ¾Èµå·ÎÀÌµå ¼³Ä¡Æú´õ¿¡ android-sdk-windows/samples/android-8/ApiDemos À§Ä¡¿¡ ¿øº»¼Ò½º°¡ ÀÖ½À´Ï´Ù.

¹Ìµð¾î Ç÷¹ÀÌ¾î °´Ã¼¸¦ »ý¼ºÇÏ¿© ·ÎÄà / ¸®¼Ò½º ¿Àµð¿À ºñµð¿À ÆÄÀÏÀ» Àоîµé¿©¼­ Àç»ý󸮸¦ ÇÕ´Ï´Ù.

¸ÕÀú ¿øÇϽô ÆÐÅ°Áö °æ·Î¿¡ MediaPlayerDemo.java ¾×ƼºñƼ Ŭ·¡½º ÆÄÀÏÀ» Ãß°¡ÇÕ´Ï´Ù.

/*
* Copyright (C) 2009 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*      http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

package net.korsoft.Test012;

import net.korsoft.Test012.R;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

/*
* µ¿¿µ»ó ÆÄÀÏ(ºñµð¿À)°ú À½¾ÇÆÄÀÏ(¿Àµð¿À)À» Àç»ýÇÏ´Â ¹Ìµð¾î Ç÷¹À̾ Á¦¾î¸¦ ÇÕ´Ï´Ù.
* /res/raw/test_cbr.mp3 À½¾ÇÆÄÀÏÀ» Àç»óÇÏ°í ÀÖ½À´Ï´Ù.
* /res/layout/mediaplayer_1.xml ·¹À̾ƿô ÆÄÀÏÀ» ¾×ƼºñƼÀÇ ·¹À̾ƿôÀ¸·Î Àû¿ëÇÕ´Ï´Ù.
* ³×°³ÀÇ ¹öÆ°À¸·Î À½¾Ç°ú ºñµð¿À ÆÄÀϵéÀ» ¸®¼Ò½º¿Í ·ÎÄÃÆÄÀÏ¿¡¼­ °¢°¢ Àоî¿Àµµ·Ï ó¸®ÇÏ°í ÀÖ½À´Ï´Ù.
*/
public class MediaPlayerDemo extends Activity {
    private Button mlocalvideo;
    private Button mresourcesvideo;
    private Button mstreamvideo;
    private Button mlocalaudio;
    private Button mresourcesaudio;
    private Button mstreamaudio;
    private static final String MEDIA = "media";
    private static final int LOCAL_AUDIO = 1;
    private static final int STREAM_AUDIO = 2;
    private static final int RESOURCES_AUDIO = 3;
    private static final int LOCAL_VIDEO = 4;
    private static final int STREAM_VIDEO = 5;
    private static final int RESOURCES_VIDEO = 6;

    @Override
    protected void onCreate(Bundle icicle) {
        // TODO Auto-generated method stub
        super.onCreate(icicle);
        setContentView(R.layout.mediaplayer_1);
        mlocalaudio = (Button) findViewById(R.id.localaudio);
        mlocalaudio.setOnClickListener(mLocalAudioListener);
        mresourcesaudio = (Button) findViewById(R.id.resourcesaudio);
        mresourcesaudio.setOnClickListener(mResourcesAudioListener);

        mlocalvideo = (Button) findViewById(R.id.localvideo);
        mlocalvideo.setOnClickListener(mLocalVideoListener);
        mstreamvideo = (Button) findViewById(R.id.streamvideo);
        mstreamvideo.setOnClickListener(mStreamVideoListener);
    }

    /*
     * ·ÎÄÿÀµð¿ÀÆÄÀÏÀ» ½ÇÇàÇÏ´Â ¹Ìµð¾îÇ÷¹À̾ ½ÃÀÛÇÏ´Â ¾×ƼºñƼ¸¦ ¶ç¿ó´Ï´Ù.
     */
    private OnClickListener mLocalAudioListener = new OnClickListener() {
        public void onClick(View v) {
            Intent intent =
                    new Intent(MediaPlayerDemo.this.getApplication(),
                            MediaPlayerDemo_Audio.class);
            intent.putExtra(MEDIA, LOCAL_AUDIO);
            startActivity(intent);

        }
    };
    /*
     * ¸®¼Ò½º¿Àµð¿ÀÆÄÀÏÀ» ½ÇÇàÇÏ´Â ¹Ìµð¾îÇ÷¹À̾ ½ÃÀÛÇÏ´Â ¾×ƼºñƼ¸¦ ¶ç¿ó´Ï´Ù.
     */
    private OnClickListener mResourcesAudioListener = new OnClickListener() {
        public void onClick(View v) {
            Intent intent =
                    new Intent(MediaPlayerDemo.this.getApplication(),
                            MediaPlayerDemo_Audio.class);
            intent.putExtra(MEDIA, RESOURCES_AUDIO);
            startActivity(intent);

        }
    };

    /*
     * ·ÎÄúñµð¿ÀÆÄÀÏÀ» ½ÇÇàÇÏ´Â ¹Ìµð¾îÇ÷¹À̾ ½ÃÀÛÇÏ´Â ¾×ƼºñƼ¸¦ ¶ç¿ó´Ï´Ù.
     */
    private OnClickListener mLocalVideoListener = new OnClickListener() {
        public void onClick(View v) {
            Intent intent =
                    new Intent(MediaPlayerDemo.this,
                            MediaPlayerDemo_Video.class);
            intent.putExtra(MEDIA, LOCAL_VIDEO);
            startActivity(intent);

        }
    };
    /*
     * ½ºÆ®¸®¹Öºñµð¿ÀÆÄÀÏÀ» ½ÇÇàÇÏ´Â ¹Ìµð¾îÇ÷¹À̾ ½ÃÀÛÇÏ´Â ¾×ƼºñƼ¸¦ ¶ç¿ó´Ï´Ù.
     */
    private OnClickListener mStreamVideoListener = new OnClickListener() {
        public void onClick(View v) {
            Intent intent =
                    new Intent(MediaPlayerDemo.this,
                            MediaPlayerDemo_Video.class);
            intent.putExtra(MEDIA, STREAM_VIDEO);
            startActivity(intent);

        }
    };



}

¿Àµð¿À ÆÄÀÏÀ» Àç»ýÇÏ´Â ¾×ƼºñƼ ÆÄÀÏÀÎ MediaPlayerDemo_Audio.java ¸¦ ¿øÇϽô ÆÐÅ°Áö °æ·Î¿¡ Ãß°¡ÇÕ´Ï´Ù.

/*
* Copyright (C) 2009 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*      http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

package net.korsoft.Test012;

import android.app.Activity;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.util.Log;
import android.widget.TextView;
import android.widget.Toast;

import net.korsoft.Test012.R;

public class MediaPlayerDemo_Audio extends Activity {

    private static final String TAG = "MediaPlayerDemo";
    private MediaPlayer mMediaPlayer;
    private static final String MEDIA = "media";
    private static final int LOCAL_AUDIO = 1;
    private static final int STREAM_AUDIO = 2;
    private static final int RESOURCES_AUDIO = 3;
    private static final int LOCAL_VIDEO = 4;
    private static final int STREAM_VIDEO = 5;
    private String path;

    private TextView tx;

    @Override
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        tx = new TextView(this);
        setContentView(tx);
        Bundle extras = getIntent().getExtras();
        //¾×ƼºñƼ¿¡¼­ ·ÎÄùöÆ°ÀÎÁö ¸®¼Ò½º¹öÆ°ÀÎÁö¿¡ µû¶ó¼­ ¾×źñƼÀÇ Ãß°¡µ¥ÀÌÅÍ ¼³Á¤ÇÑ °ªÀ» °¡Á®¿Í¼­ ÇØ´ç 󸮸¦ ÇÕ´Ï´Ù.
        playAudio(extras.getInt(MEDIA));
    }

    private void playAudio(Integer media) {
        try {
            switch (media) {
                case LOCAL_AUDIO:
                    /**
                     * TODO: Set the path variable to a local audio file path.
                     */
                    path = "";
                    if (path == "") {
                        // Tell the user to provide an audio file URL.
                        Toast
                                .makeText(
                                        MediaPlayerDemo_Audio.this,
                                        "Please edit MediaPlayer_Audio Activity, "
                                                + "and set the path variable to your audio file path."
                                                + " Your audio file must be stored on sdcard.",
                                        Toast.LENGTH_LONG).show();

                    }
                    //¹Ìµð¾î Ç÷¹ÀÌ¾î °´Ã¼»ý¼º
                    mMediaPlayer = new MediaPlayer();
                    //¿Àµð¿ÀÆÄÀÏ°æ·Î ¼³Á¤
                    mMediaPlayer.setDataSource(path);
                    mMediaPlayer.prepare();
                    mMediaPlayer.start();
                    break;
                case RESOURCES_AUDIO:
                    /**
                     * TODO: Upload a audio file to res/raw folder and provide
                     * its resid in MediaPlayer.create() method.
                     */
                 //¿Àµð¿À ¸®¼Ò½ºÆÄÀÏ¿¡¼­ ¹Ìµð¿ÀÇ÷¹À̾ »ý¼ºÇÏ¿©, Àç»ý½ÃÀÛó¸®
                    mMediaPlayer = MediaPlayer.create(this, R.raw.test_cbr);
                    mMediaPlayer.start();

            }
            tx.setText("Playing audio...");

        } catch (Exception e) {
            Log.e(TAG, "error: " + e.getMessage(), e);
        }

    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        // TODO Auto-generated method stub
        if (mMediaPlayer != null) {
         //¹Ìµð¾î Ç÷¹À̾î ÇØÁ¦..
            mMediaPlayer.release();
            mMediaPlayer = null;
        }

    }
}

ºñµð¿À ÆÄÀÏÀ» Àç»ýÇÏ´Â MediaPlayerDemo_Video.java ÆÄÀÏÀ» ¿øÇϽô °æ·Î¿¡ Ãß°¡ÇØÁÝ´Ï´Ù.

/*
* Copyright (C) 2009 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*      http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

package net.korsoft.Test012;

import net.korsoft.Test012.R;

import android.app.Activity;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnBufferingUpdateListener;
import android.media.MediaPlayer.OnCompletionListener;
import android.media.MediaPlayer.OnPreparedListener;
import android.media.MediaPlayer.OnVideoSizeChangedListener;
import android.os.Bundle;
import android.util.Log;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.widget.Toast;

/*
* ºñµð¿À ÆÄÀÏÀ» Àç»ýÇϴ Ŭ·¡½º ÀÔ´Ï´Ù.
* °¢Á¾ ¹Ìµð¾î Ç÷¹ÀÌ¾î °ü·ÃµÈ ÀÎÅÍÆäÀ̽ºµéÀ» ±¸ÇöÇÏ¿©,
* °¢ ÀÎÅÍÆäÀ̽ºµéÀÇ ¸Þ¼ÒµåµéÀ» ±¸ÇöÇϸ鼭, ¹Ìµð¾î Ç÷¹À̾ Á¦¾îÇÏ°í ÀÖ½À´Ï´Ù.
*/
public class MediaPlayerDemo_Video extends Activity implements
        OnBufferingUpdateListener, OnCompletionListener,
        OnPreparedListener, OnVideoSizeChangedListener, SurfaceHolder.Callback {

    private static final String TAG = "MediaPlayerDemo";
    private int mVideoWidth;
    private int mVideoHeight;
    private MediaPlayer mMediaPlayer;
    private SurfaceView mPreview;
    private SurfaceHolder holder;
    private String path;
    private Bundle extras;
    private static final String MEDIA = "media";
    private static final int LOCAL_AUDIO = 1;
    private static final int STREAM_AUDIO = 2;
    private static final int RESOURCES_AUDIO = 3;
    private static final int LOCAL_VIDEO = 4;
    private static final int STREAM_VIDEO = 5;
    private boolean mIsVideoSizeKnown = false;
    private boolean mIsVideoReadyToBePlayed = false;

    /**
     *
     * Called when the activity is first created.
     */
    @Override
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        setContentView(R.layout.mediaplayer_2);
        mPreview = (SurfaceView) findViewById(R.id.surface);
        holder = mPreview.getHolder();
        holder.addCallback(this);
        holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
        extras = getIntent().getExtras();

    }

    private void playVideo(Integer Media) {
        doCleanUp();
        try {

            switch (Media) {
                case LOCAL_VIDEO:
                    /*
                     * TODO: Set the path variable to a local media file path.
                     */
                    path = "";
                    if (path == "") {
                        // Tell the user to provide a media file URL.
                        Toast
                                .makeText(
                                        MediaPlayerDemo_Video.this,
                                        "Please edit MediaPlayerDemo_Video Activity, "
                                                + "and set the path variable to your media file path."
                                                + " Your media file must be stored on sdcard.",
                                        Toast.LENGTH_LONG).show();

                    }
                    break;
                case STREAM_VIDEO:
                    /*
                     * TODO: Set path variable to progressive streamable mp4 or
                     * 3gpp format URL. Http protocol should be used.
                     * Mediaplayer can only play "progressive streamable
                     * contents" which basically means: 1. the movie atom has to
                     * precede all the media data atoms. 2. The clip has to be
                     * reasonably interleaved.
                     *
                     */
                    path = "";
                    if (path == "") {
                        // Tell the user to provide a media file URL.
                        Toast
                                .makeText(
                                        MediaPlayerDemo_Video.this,
                                        "Please edit MediaPlayerDemo_Video Activity,"
                                                + " and set the path variable to your media file URL.",
                                        Toast.LENGTH_LONG).show();

                    }

                    break;


            }

            // Create a new media player and set the listeners
            mMediaPlayer = new MediaPlayer();
            mMediaPlayer.setDataSource(path);
            mMediaPlayer.setDisplay(holder);
            mMediaPlayer.prepare();
            mMediaPlayer.setOnBufferingUpdateListener(this);
            mMediaPlayer.setOnCompletionListener(this);
            mMediaPlayer.setOnPreparedListener(this);
            mMediaPlayer.setOnVideoSizeChangedListener(this);
            mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);


        } catch (Exception e) {
            Log.e(TAG, "error: " + e.getMessage(), e);
        }
    }

    public void onBufferingUpdate(MediaPlayer arg0, int percent) {
        Log.d(TAG, "onBufferingUpdate percent:" + percent);

    }

    public void onCompletion(MediaPlayer arg0) {
        Log.d(TAG, "onCompletion called");
    }

    public void onVideoSizeChanged(MediaPlayer mp, int width, int height) {
        Log.v(TAG, "onVideoSizeChanged called");
        if (width == 0 || height == 0) {
            Log.e(TAG, "invalid video width(" + width + ") or height(" + height + ")");
            return;
        }
        mIsVideoSizeKnown = true;
        mVideoWidth = width;
        mVideoHeight = height;
        if (mIsVideoReadyToBePlayed && mIsVideoSizeKnown) {
            startVideoPlayback();
        }
    }

    public void onPrepared(MediaPlayer mediaplayer) {
        Log.d(TAG, "onPrepared called");
        mIsVideoReadyToBePlayed = true;
        if (mIsVideoReadyToBePlayed && mIsVideoSizeKnown) {
            startVideoPlayback();
        }
    }

    public void surfaceChanged(SurfaceHolder surfaceholder, int i, int j, int k) {
        Log.d(TAG, "surfaceChanged called");

    }

    public void surfaceDestroyed(SurfaceHolder surfaceholder) {
        Log.d(TAG, "surfaceDestroyed called");
    }


    public void surfaceCreated(SurfaceHolder holder) {
        Log.d(TAG, "surfaceCreated called");
        playVideo(extras.getInt(MEDIA));


    }

    @Override
    protected void onPause() {
        super.onPause();
        releaseMediaPlayer();
        doCleanUp();
    }

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

    private void releaseMediaPlayer() {
        if (mMediaPlayer != null) {
            mMediaPlayer.release();
            mMediaPlayer = null;
        }
    }

    private void doCleanUp() {
        mVideoWidth = 0;
        mVideoHeight = 0;
        mIsVideoReadyToBePlayed = false;
        mIsVideoSizeKnown = false;
    }

    private void startVideoPlayback() {
        Log.v(TAG, "startVideoPlayback");
        holder.setFixedSize(mVideoWidth, mVideoHeight);
        mMediaPlayer.start();
    }
}

À§ÀÇ ¾×ƼºñƼ¿¡ Àû¿ëÇÒ ·¹À̾ƿô ÆÄÀÏÀ» /res/layout/mediaplayer_1.xml ÆÄÀÏÀ» Ãß°¡ÇÕ´Ï´Ù.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    >
    <Button android:id="@+id/localvideo"
        android:layout_height="wrap_content"
        android:layout_width="match_parent"
        android:text="@string/local_video"
    />
    
    <Button android:id="@+id/streamvideo"
        android:layout_height="wrap_content"
        android:layout_width="match_parent"
        android:text="@string/stream_video"
    />
    
    <Button android:id="@+id/localaudio"
        android:layout_height="wrap_content"
        android:layout_width="match_parent"
        android:text="@string/local_audio"
    />
    
    <Button android:id="@+id/resourcesaudio"
        android:layout_height="wrap_content"
        android:layout_width="match_parent"
        android:text="@string/res_audio"
    />
    
</LinearLayout>


À§ÀÇ ¾×ƼºñƼ¿¡ Àû¿ëÇÒ ·¹À̾ƿô ÆÄÀÏÀ» /res/layout/mediaplayer_2.xml ÆÄÀÏÀ» Ãß°¡ÇÕ´Ï´Ù.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <SurfaceView android:id="@+id/surface"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center">
    </SurfaceView>
  
</LinearLayout>


¾Èµå·ÎÀ̵å sdk ¼³Ä¡Æú´õ¿¡¼­, »ùÇÃÆú´õ¿¡¼­ /res/raw/test_cbr.mp3 ÆÄÀÏÀ» ÇöÀç ÇÁ·ÎÁ§Æ® Æú´õ·Î º¹»çÇØ¿É´Ï´Ù.

AndroidManifest.xml ÆÄÀÏÀ» ¼³Á¤ÇÕ´Ï´Ù.

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="net.korsoft.Test012"
      android:versionCode="1"
      android:versionName="1.0">
    <uses-sdk android:minSdkVersion="8" />

    <application android:icon="@drawable/icon" android:label="@string/app_name">

        <activity android:name=".MediaPlayerDemo" android:label="Media/MediaPlayer">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <activity android:name=".MediaPlayerDemo_Audio" android:label="Media/MediaPlayer">
            <intent-filter>
                <category android:name="android.intent.category.SAMPLE_CODE" />
            </intent-filter>
        </activity>

        <activity android:name=".MediaPlayerDemo_Video" android:label="Media/MediaPlayer">
            <intent-filter>
                <category android:name="android.intent.category.SAMPLE_CODE" />
            </intent-filter>
        </activity>

    </application>
</manifest>
ÃßõÃßõ : 262 Ãßõ ¸ñ·Ï
¹øÈ£ Á¦¸ñ
1,166
Android WebView Facebook Login (popup/redirection issues)
1,165
Loading GIF [Android]listView ¿ø°ÝÀ̹ÌÁö [Android]
1,164
¾Û ¹öÀü üũ ½ºÅä¾î·Î À̵¿ [Android]
1,163
WebViewClient [Android]
1,162
http post get Àü¼Û
1,161
À¥ºä ¸Þ¼Òµå È£ÃâÀÌ ¾ÈµÉ ¶§ (android.permission.INTERACT_ACROSS_USERS_FULL)
1,160
°³¹ß Áß ¿¡·¯ ¹ß»ý½Ã ¿¡·¯ ³»¿ë È®ÀÎ, ÇØ°á¹æ¹ý [Android]
1,159
ij½Ã Áö¿ì±â [Android]
1,158
¹Ù·ÎÇ®¾î(¼öÇÐ ¹®Á¦ ÁúÀÇÀÀ´ä SNS) ¿¡ »ç¿ëµÈ ¿ÀǼҽº ¶óÀ̺귯¸® [Android]
1,157
¿ÀǼҽº ¶óÀ̺귯¸® ¸ðÀ½ [Android]
1,156
´Ü¸»±â ¹öÀü Á¤º¸ [Android]
1,155
Android webview °³¹ß½Ã ¾Ë¾ÆµÖ¾ß ÇÒ °Íµé [Android]
1,154
[¾Èµå·ÎÀ̵å] ¾Û ³»¿¡¼­ ·±Å¸ÀÓ ±ÇÇÑÀ» ¿äûÇÏ´Â ¹æ¹ý
1,153
webview µ¿¿µ»ó Àç»ý [Android]
1,152
android studio DefaultHttpClient, HttpClient import ¿¡·¯
1,151
[Android] ANR À̶õ?
1,150
¾Èµå·ÎÀÌµå ¿ÀǼҽº
1,149
Android] AlarmManager ÀÏÁ¤½Ã°£ À̺¥Æ® ½ÇÇà
1,148
[Android] Webview url ¼û±â±â
1,147
[Android] webview ssl ¹®Á¦
1,146
[Android] Webview 404 ¿¡·¯ ó¸®
1,145
[Android] Webview ¸Þ¼Òµå
1,144
[¾Èµå·ÎÀ̵å] À¥ºä(WebView ¿¡¼­ ÀÚ¹Ù½ºÅ©¸³Æ® alert ¶ç¿ì±â
1,143
(Android) WebView _blank ó¸®
1,142
webvew ¿¡¼­ ºê¶ó¿ìÀú·Î ¸µÅ©(_blank)
1,141
[Android]¾Èµå·ÎÀ̵å Intent »ç¿ë¹ý
1,140
¾Èµå·ÎÀÌµå ¹Ìµð¾î Ç÷¹À̾î (MediaPlayer) ¿¹Á¦
1,139
[Android] BroadcastReceiver »ç¿ëÇϱâ
1,138
Media Player¸¦ ÀÌ¿ëÇÑ À½¾Ç Àç»ý
1,137
[°³¹ß Tip] Activity³» ¹è°æÀ» Åõ¸íÇÏ°Ô Çϱâ
¸ñ·Ï
¹ÂÁ÷Æ®·ÎÆ® ºÎ»ê±¤¿ª½Ã ºÎ»êÁø±¸ °¡¾ßµ¿ ¤Ó °³ÀÎÁ¤º¸Ãë±Þ¹æħ
Copyright ¨Ï musictrot All rights reserved.