Android uygulamamda YouTube videosu nasıl oynatılır?


84

YouTubeBaşvurumda videoları nasıl oynatırım ? play videoİndirmeden doğrudan YouTube'dan yayınlamak istiyorum . Ayrıca video oynatırken menü seçenekleri sunmak istiyorum. Varsayılan amacı kullanarak video oynatmak istemiyorum. Bunu nasıl yapabilirim?



1
Sadece 2 dakikalık çalışma, geliştirici konsolundan Youtube seçeneğini etkinleştirin, youtube oynatıcı jar dosyasını indirin, kullanmaya başlayın, bu gönderiye
Naruto

Yanıtlar:


59

Bu, btn tıklama etkinliği

btnvideo.setOnClickListener(new OnClickListener() {

public void onClick(View v) {

    startActivity(new Intent(Intent.ACTION_VIEW,Uri.parse("http://www.youtube.com/watch?v=Hxy8BZGQ5Jo")));
    Log.i("Video", "Video Playing....");

    }
}); 

bu tür videonuzu gösterebileceğiniz youtube ile başka bir sayfada açılır


1
bu, YouTube aap'a bağlıdır, aksi takdirde videoyu yeni webView'da açar, videoyu VideoView'da oynatmak istiyorum, web görünümünde değil .. bir şekilde önermek yerine.
Abid A. Chaudhary

3
VideoViewvideonun mutlak URL'sini gerektirir, YouTube durumunda muhtemelen mevcut değildir.
Aman Alam

3
Herhangi bir kopya ve yapıştırıcıya, bunun neden işe yaramayacağı konusunda kafanız karıştıysa, newIntent'te bir boşluk olmalıdır. yeni Niyet
OrhanC1

10
Soru şu şekilde gider: "Varsayılan amacı kullanarak video oynatmak istemiyorum."
Naresh

18

Adımlar

  1. Oynatıcınız (tam ekran) için menü seçenekleriyle yeni bir Etkinlik oluşturun. Mediaplayer'ı ve kullanıcı arayüzünü farklı iş parçacıklarında çalıştırın.

  2. Medya oynatmak için - Genel olarak ses / video oynatmak için android'de mediaplayer api vardır. FILE_PATH, dosyanın yoludur - url (youtube) akışı veya yerel dosya yolu olabilir

     MediaPlayer mp = new MediaPlayer();
        mp.setDataSource(FILE_PATH);
        mp.prepare();
        mp.start();
    

Ayrıca kontrol edin: Android YouTube uygulaması Play Video Intent bunu daha önce ayrıntılı olarak tartıştı.


8
FILE_PATH bir youtube videosunu nasıl işaret edebilir? Youtube, dosyanın kendisine değil, videoyu oynatan bir web sayfasına bağlanır.
Marty Miller

3
Youtube'un mutlak bir URL'si yok. OP'nin asıl endişesi buydu.
noob

1
@MartyMiller Youtube'dan akış URL'si almak farklı bir sorudur. Youtube API'leri ile ilgilidir.
Naresh

12

YouTube Android Player API'sini kullanın.

activity_main.xml:

 <?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:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"

tools:context="com.example.andreaskonstantakos.vfy.MainActivity">

<com.google.android.youtube.player.YouTubePlayerView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:visibility="visible"
    android:layout_centerHorizontal="true"
    android:id="@+id/youtube_player"
    android:layout_alignParentTop="true" />

<Button
android:text="Button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginBottom="195dp"
android:visibility="visible"
android:id="@+id/button" />


</RelativeLayout>

MainActivity.java:

package com.example.andreaskonstantakos.vfy;


import android.os.Bundle;
import android.view.View;
import android.widget.Button;
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.YouTubePlayerView;



public class MainActivity extends YouTubeBaseActivity {

YouTubePlayerView youTubePlayerView;
Button button;
YouTubePlayer.OnInitializedListener onInitializedListener;

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

     youTubePlayerView = (YouTubePlayerView) findViewById(R.id.youtube_player);
     button = (Button) findViewById(R.id.button);


     onInitializedListener = new YouTubePlayer.OnInitializedListener(){

         @Override
         public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer youTubePlayer, boolean b) {

            youTubePlayer.loadVideo("Hce74cEAAaE");

             youTubePlayer.play();
     }

         @Override
         public void onInitializationFailure(YouTubePlayer.Provider provider, YouTubeInitializationResult youTubeInitializationResult) {

         }
     };

    button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

youTubePlayerView.initialize(PlayerConfig.API_KEY,onInitializedListener);
        }
    });
}
}

ve PlayerConfig.java sınıfı:

    package com.example.andreaskonstantakos.vfy;

/**
 * Created by Andreas Konstantakos on 13/4/2017.
 */

public class PlayerConfig {

PlayerConfig(){}

public static final String API_KEY = 
"xxxxx";
}

"Hce74cEAAaE" kısmını https://www.youtube.com/watch?v=Hce74cEAAaE adresindeki video kimliğinizle değiştirin . API_KEY'inizi Console.developers.google.com'dan alın ve ayrıca PlayerConfig.API_KEY'de değiştirin. Daha fazla bilgi için aşağıdaki öğreticiyi adım adım takip edebilirsiniz: https://www.youtube.com/watch?v=3LiubyYpEUk


Dinamik video kimliğini kullanmak istiyorsam, "YouTubeAndroidPlayerAPI: Embed yapılandırması RemoteEmbeddedPlayer'da desteklenmiyor." hatası ve videomu oynatmıyor. Bana yardım edebilir misin ... Şimdiden teşekkürler.
amit pandya

youTubePlayerView.initialize mevcut değil, kaldırılmış olabilir mi?
Alberto M

6

Cihazda YouTube uygulamasının bulunmasını istemedim, bu yüzden şu eğiticiyi kullandım:

http://www.viralandroid.com/2015/09/how-to-embed-youtube-video-in-android-webview.html

... bu kodu uygulamamda üretmek için:

WebView mWebView; 

@Override
public void onCreate(Bundle savedInstanceState) {
    setContentView(R.layout.video_webview);
    mWebView=(WebView)findViewById(R.id.videoview);

    //build your own src link with your video ID
    String videoStr = "<html><body>Promo video<br><iframe width=\"420\" height=\"315\" src=\"https://www.youtube.com/embed/47yJ2XCRLZs\" frameborder=\"0\" allowfullscreen></iframe></body></html>";

    mWebView.setWebViewClient(new WebViewClient() {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
                return false;
        }
    });
    WebSettings ws = mWebView.getSettings();
    ws.setJavaScriptEnabled(true);
    mWebView.loadData(videoStr, "text/html", "utf-8");

}

//video_webview
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_marginLeft="0dp"
    android:layout_marginRight="0dp"
    android:background="#000000"
    android:id="@+id/bmp_programme_ll"
    android:orientation="vertical" >

   <WebView
    android:id="@+id/videoview" 
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    />  
</LinearLayout>     

Bu tam istediğim gibi çalıştı. Otomatik olarak oynatılmıyor, ancak uygulamamdaki video akışı var. Bazı kısıtlanmış videoların gömüldüğünde oynatılmayacağını belirtmek gerekir.


1
Evet doğru uygulama sayesinde size JanB içinde yük videoya YouTube API güzel bir şekilde olmadan web görünümüne sahip uygulamanızla gömülü
Ajay Pandya

YouTube Android Player API gibi bir API anahtarına kaydolmayı gerektirmeyen harika ve kolay bir çözüm . Benim için çalıştı!
Michael Osofsky

3

İframe'i https://developers.google.com/youtube/iframe_api_reference adresinde açıklandığı gibi kullanabilirsiniz.

Google tavsiyelerini tam olarak takip etmiyorum ama bu kullandığım kod ve iyi çalışıyor

public class CWebVideoView {

    private String url;
    private Context context;
    private WebView webview;
    private static final String HTML_TEMPLATE = "webvideo.html";

    public CWebVideoView(Context context, WebView webview) {
        this.webview = webview;
        this.context = context;
        webview.setBackgroundColor(0);
        webview.getSettings().setJavaScriptEnabled(true);
    }

    public void load(String url){
        this.url = url;
        String data = readFromfile(HTML_TEMPLATE, context);
        data = data.replace("%1", url);
        webview.loadData(data, "text/html", "UTF-8");
    }

    public String readFromfile(String fileName, Context context) {
        StringBuilder returnString = new StringBuilder();
        InputStream fIn = null;
        InputStreamReader isr = null;
        BufferedReader input = null;
        try {
            fIn = context.getResources().getAssets().open(fileName, Context.MODE_WORLD_READABLE);
            isr = new InputStreamReader(fIn);
            input = new BufferedReader(isr);
            String line = "";
            while ((line = input.readLine()) != null) {
                returnString.append(line);
            }
        } catch (Exception e) {
            e.getMessage();
        } finally {
            try {
                if (isr != null)
                    isr.close();
                if (fIn != null)
                    fIn.close();
                if (input != null)
                    input.close();
            } catch (Exception e2) {
                e2.getMessage();
            }
        }
        return returnString.toString();
    }

    public void reload() {
        if (url!=null){
            load(url);
        }
    }
}

/ varlıklar içinde webvideo.html adında bir dosyam var

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <style>
            iframe   { border: 0; position:fixed; width:100%; height:100%; bgcolor="#000000"; }
            body     { margin: 0; bgcolor="#000000"; }
        </style>        
    </head>
    <body>
        <iframe src="%1" frameborder="0" allowfullscreen></iframe>
    </body>
</html>

ve şimdi ana düzenimin içinde bir web görünümü tanımlıyorum

<WebView
    android:id="@+id/video"
    android:visibility="gone"
    android:background="#000000"
    android:layout_centerInParent="true"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

ve etkinliğim içinde CWebVideoView kullanıyorum

videoView = (WebView) view.findViewById(R.id.video);
videoView.setVisibility(View.VISIBLE);
cWebVideoView = new CWebVideoView(context, videoView);
cWebVideoView.load(url);

Cevabınız için teşekkürler. Kodun sonucunu da görebilmemiz için bir ekran görüntüsü koyabilir misiniz?
Saeed Jassani

2

Bu cevap gerçekten geç olabilir, ancak yararlıdır.

Android-youtube-player'ı kullanarak youtube videolarını uygulamanın kendisinde oynatabilirsiniz .

Bazı kod parçacıkları:

URL'sinde video kimliği olan bir youtube videosunu oynatmak için OpenYouTubePlayerActivityamacı çağırmanız yeterlidir

Intent intent = new Intent(null, Uri.parse("ytv://"+v), this, 
            OpenYouTubePlayerActivity.class);
startActivity(intent);

v video kimliğidir.

Manifest dosyasına aşağıdaki izinleri ekleyin:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>

ve ayrıca bu etkinliği manifest dosyasında beyan edin:

<activity 
        android:name="com.keyes.youtube.OpenYouTubePlayerActivity"></activity>

Bu kod dosyasının ilk bölümlerinden daha fazla bilgi elde edilebilir .

Umarım bu herkese yardımcı olur!


2

Google, video oynatma işlevini Android uygulamalarınıza dahil etmenizi sağlayan bir YouTube Android Player API'sine sahiptir. API'nin kullanımı çok kolaydır ve iyi çalışır. Örneğin, API kullanarak bir videoyu oynatmak için yeni bir etkinliğin nasıl oluşturulacağı burada açıklanmaktadır.

Intent intent = YouTubeStandalonePlayer.createVideoIntent(this, "<<YOUTUBE_API_KEY>>", "<<Youtube Video ID>>", 0, true, false);   
startActivity(intent);

Bkz bu fazla ayrıntı için.


1

android uygulamanızda herhangi bir you tube videosunu oynatmak için bu projeyi kullanabilirsiniz . Şimdi diğer video veya video kimliği için ... Bunu yapmanın https://gdata.youtube.com/feeds/api/users/eminemvevo/uploads/ nereye eminemvevo kanalı = .

video kimliğini bulduktan sonra, bu kimliği cueVideo("video_id")

src -> com -> examples -> youtubeapidemo -> PlayerViewDemoActivity

  @Override
  public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer player , boolean wasRestored) {
    if (!wasRestored) {
      player.cueVideo("wKJ9KzGQq0w");
    }
  }

Ve özel olarak daha iyi bir şekilde bu VIDEO_ID okumak için açmak bu ve bunu bir xml [olarak 1st_file] dosyasında masaüstünüzde içinde yeni bir oluşturduktan sonra XML dosyası Gözlerinde farklı projectveya [yükleyebilir 1st_fileprojenizde] kaydettiğiniz dosyayı ve içinde RIGHT_CLICK ve xml_editor dosyasıyla açın, burada belirli videonun video kimliğini bulacaksınız.

görüntü açıklamasını buraya girin


1
MediaPlayer mp=new MediaPlayer(); 
mp.setDataSource(path);
mp.setScreenOnWhilePlaying(true);
mp.setDisplay(holder);
mp.prepare();
mp.start();

-6
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.youtube.com/watchv=cxLG2wtE7TM"));
startActivity(intent);

Gerçekten mi? "Varsayılan amacı kullanarak video oynatmak istemiyorum.", İkinci satırdan son satıra.
Squirrelkiller

Bu sadece mevcut cevabın tekrarıdır .
Pang
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.