Header Ads

[Android] Youtube bài 1: Hướng dẫn tạo api key cho android youtube player

Download api và nhúng vào project
1. Truy cập vào địa chỉ
   https://developers.google.com/youtube/android/player/downloads/
2.Download YouTubeAndroidPlayerApi, giải nén, vào thư mục libs copy file .jar và copy vào thư     mục         libs của project.
3.Click phải project, Build Path -> Configure Build Path -> Libraries Tab
4.Nhấn nút Add Jars -> Chọn Your project’s libs folder -> chọn YouTubeAndroidPlayerAPI.jar ->Ok
5.Order and Export Tab -> Check vào YouTubeAndroidPlayerAPI.jar – Ok

I : Tạo api key cho android youtube player

       1.Truy cập địa chỉ https://console.developers.google.com/project  với account google Nhấn nút Create Project nhập vào Project name -> nhấn nút create.

     
     2. Sau khi tạo project xong chọn project chọn APIs&auth -> APIs và bật ON cho YouTube Data API v3.


           3.Chọn Credentials -> chọn nút “Create new key”. Hộp thoại mở ra chọn Android key


          4.Cửa sổ mới mở lên, để yên đó quay lại eclipse. Chọn Window->Preference-> Android -> Build để ý đường dẫn của Default debug keystore (chỉ có khi đã compiler project).


         5.     Mở command line (cmd) bằng quyền admin và đi vào thư mục jdk như hình


       6. Gõ lệnh theo cú pháp
keytool  –v  –list  –keystore “<duongdandenfile debug.keystore>”
khi nó hỏi password thì cứ enter.
Copy lại dòng SHA1. Máy tôi là : CE:33:FE:81:C9:03:1D:C7:F3:93:2A:62:2B:67:3F:C1:9C:BC:DA:88
   
      7.Quay lại web, trong cửa sổ Configure ta paste SHA1 rồi thêm ; và đến tên project vào ô nhập rồi chọn nút Create ta sẽ có được api key như hình

Trên Android.

       8.Tạo một activity mới. Bằng cách tạo layout và sửa như sau:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".TruitonYouTubeAPIActivity" >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/hello_world" />

    <com.google.android.youtube.player.YouTubePlayerView
        android:id="@+id/youtube_view"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

</RelativeLayout
        
      9 .Thêm trong manifest.xml activity mới như sau:

        <activity
            android:name="kinh.phat.youtube.ActivityPlayYouTube"
            android:label="@string/title_activity_baigiang"
             >
        </activity>
      
      10.  Trong file java sửa như sau:

public class ActivityPlayYouTube extends YouTubeBaseActivity implements
          YouTubePlayer.OnInitializedListener {

     private YouTubePlayer YPlayer;
     private static final String YoutubeDeveloperKey = "YOUR_DEVELOPER_KEY_GOES_HERE";
     private static final int RECOVERY_DIALOG_REQUEST = 1;

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

          YouTubePlayerView youTubeView = (YouTubePlayerView) findViewById(R.id.youtube_view);
          youTubeView.initialize(YoutubeDeveloperKey, this);
     }

     @Override
     public boolean onCreateOptionsMenu(Menu menu) {
          // Inflate the menu; this adds items to the action bar if it is present.
          //getMenuInflater().inflate(R.menu.you_tube_api, menu);
          return true;
     }

     @Override
     public void onInitializationFailure(YouTubePlayer.Provider provider,
              YouTubeInitializationResult errorReason) {
          if (errorReason.isUserRecoverableError()) {
              errorReason.getErrorDialog(this, RECOVERY_DIALOG_REQUEST).show();
          } else {
              String errorMessage = String.format(
                        "There was an error initializing the YouTubePlayer",
                        errorReason.toString());
              Toast.makeText(this, errorMessage, Toast.LENGTH_LONG).show();
          }
     }

     @Override
     protected void onActivityResult(int requestCode, int resultCode, Intent data) {
          if (requestCode == RECOVERY_DIALOG_REQUEST) {
              // Retry initialization if user performed a recovery action
              getYouTubePlayerProvider().initialize(YoutubeDeveloperKey, this);
          }
     }

     protected YouTubePlayer.Provider getYouTubePlayerProvider() {
          return (YouTubePlayerView) findViewById(R.id.youtube_view);
     }

     @Override
     public void onInitializationSuccess(Provider provider,
              YouTubePlayer player, boolean wasRestored) {
          if (!wasRestored) {
              YPlayer = player;
              /*
               * Now that this variable YPlayer is global you can access it
               * throughout the activity, and perform all the player actions like
               * play, pause and seeking to a position by code.
               */
              YPlayer.cueVideo("2zNSgSzhBfM");
          }
     }
}
       11.  Sửa lại biến YoutubeDeveloperKey chính là key phát sinh từ trang web.
       12.  Hàm cuối cùng .cueVideo đối số truyền vô chính là mã của 1 video youtube. 
       13.  Chạy và xem kết quả.

Ghép với bài playlist

Video đã lên, khi ghép nó chung với bài youtubeplaylist thì khi playlist hiện ra danh sách video, khi nhấn vào 1 video sẽ gọi qua đây và chiếu video được nhận.
Vậy trên activity hiện playlist có phần videoparser.java ta sẽ sửa như sau:

     @Override
     protected void onPostExecute(Void result) {
          // TODO Auto-generated method stub
          super.onPostExecute(result);
          dialog.dismiss();
         
          //lv_video.setAdapter(new AdapterVideo(context,R.layout.list_row,menuitems,manghinh));    

         
           adapter=new LazyImageLoadAdapter(context, menuitems);
           lv_video.setAdapter(adapter);
         
         
        lv_video.setOnItemClickListener(new OnItemClickListener() {

              @Override
              public void onItemClick(AdapterView<?> parent, View view,
                        int position, long id) {
                   // TODO Auto-generated method stub
                   String link=menuitems.get(position).get("link").toString();
                  
                   //Toast.makeText(context, link,Toast.LENGTH_SHORT).show();
                   Intent i=new Intent(context,ActivityPlayYouTube.class);
                   i.putExtra("link",link);
                   context.startActivity(i);
                  
              }
          });

     }
(giá trị link là do lệnh String link = player.getString("default"); ở mà ta lấy ra từ json). Trên mã lệnh trên ta còn thấy đưa link qua cho class ActivityPlayYouTube.

Trong ActivityPlayYouTube.java ta sửa thêm như sau:

       1.     Trong onCreate ta lấy và sửa link như sau:

          Intent i=getIntent();
          link=i.getStringExtra("link");
          link=link.substring(link.indexOf("=")+1,link.indexOf("&"));

       2.     Kéo xuống bên dưới và đưa biến link vào cho hàm YPlayer.cueVideo
              //YPlayer.cueVideo("2zNSgSzhBfM");
              YPlayer.cueVideo(link);              
      3.     Trong Manifest để cho activity nằm ngang và không có action bar ta sửa như sau:
       <activity
            android:screenOrientation="landscape"
            android:theme="@android:style/Theme.NoTitleBar"
            android:name="truyen.tau.youtubeplaylist.ActivityPlayYouTube"
            android:label=""
             >
        </activity>

No comments:

Powered by Blogger.