অ্যান্ড্রয়েড ইউটিউব অ্যাপ্লিকেশন প্লে ভিডিও উদ্দেশ্য


148

আমি এমন একটি অ্যাপ তৈরি করেছি যেখানে আপনি অ্যান্ড্রয়েডের জন্য ইউটিউব ভিডিও ডাউনলোড করতে পারেন। এখন, আমি এটি চাই যাতে আপনি যদি ইউটিউব নেটিভ অ্যাপ্লিকেশনটিতে কোনও ভিডিও খেলেন তবে আপনি এটি ডাউনলোডও করতে পারেন। এটি করার জন্য, আমাকে ইউটিউব অ্যাপ্লিকেশনটি খেলতে ইউটিউব নেটিভ অ্যাপ্লিকেশনটি রেখেছিল এমন ইন্টেন্টটি জানতে হবে।
আমি যদি সহজেই আমার এমুলেটরটিতে ইউটিউব প্রোগ্রাম থাকি, তবে আমি প্রথম কাজটি
করতে পারি , তাই আমার প্রথম প্রশ্নটি হল: 1. আমি কি আমার এমুলেটরটির জন্য ইউটিউব অ্যাপ্লিকেশনটি ডাউনলোড করতে পারি, বা ...
2. যখন ব্যবহারকারী কোনও ভিডিও নির্বাচন করেন তখন কী উদ্দেশ্য ব্যবহার করা হয়? প্লেব্যাকের জন্য


ওহে, আমি একটি ইউটিউব ভিডিও ডাউনলোডার অ্যাপ তৈরির চেষ্টা করছি। সুতরাং, আমি জানতে চাই যে এর জন্য আমাকে কোনও এপিআই কী পেতে হবে বা আমি কেবল আমার অ্যাপটিতে ওয়েবভিউ ব্যবহার করতে পারি ?? @ এএসপি
জয়দীপ

উত্তর:


263

এবং এটি সম্পর্কে:

public static void watchYoutubeVideo(Context context, String id){
    Intent appIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("vnd.youtube:" + id));
    Intent webIntent = new Intent(Intent.ACTION_VIEW,
                Uri.parse("http://www.youtube.com/watch?v=" + id));
    try {
        context.startActivity(appIntent);
    } catch (ActivityNotFoundException ex) {
        context.startActivity(webIntent);
    }
} 

দ্রষ্টব্য: আপনি যখন এই পদ্ধতিটি ব্যবহার করছেন তখন সাবধান থাকুন, স্প্যামের কারণে ইউটিউব আপনার চ্যানেলটি স্থগিত করতে পারে, এটি আমার সাথে দু'বার ঘটেছে


5
ইউটিউব অ্যাপ্লিকেশনটি উপলভ্য থাকলে সমর্থন করার জন্য এবং প্রয়োজনে ওয়েব ব্রাউজারে ফিরে আসার জন্য প্রপস। এই প্রশ্নে যারা আসছেন তাদের জন্য, এটি ব্যবহারের উত্তর।
লুক সাপন

কীওয়ার্ডের মাধ্যমে অনুসন্ধানের জন্য কীভাবে ইউটিউব অ্যাপ্লিকেশন চালু করবেন। আমি চাই যে ইউটিউব অ্যাপটি চালু করা হোক এবং তারপরে "স্টিভ
জবস

@ রুশল জেইন এটি একটি নতুন বিষয় হবে। আমি যা করব তা হ'ল "অ্যান্ড্রয়েড ইউটিউব অভিপ্রায় অনুসন্ধান পাঠ্য" বা এর মতো কিছু অনুসন্ধান করা।
ভোগদেভ

2
আইএমএইচও এটি গ্রহণযোগ্য উত্তর হওয়া উচিত। অনেক ধন্যবাদ!
নাচো এল

1
এটি উত্তর তবে সম্ভবত আপনার ফাংশন ঘোষণায় স্থির অপসারণ করা উচিত
আম্পারসান্ডা

176

এই কাজ করবে একটি ডিভাইস নয় এমুলেটর প্রতি Lemmy এর উত্তর

startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.youtube.com/watch?v=cxLG2wtE7TM")));

এটি আমার জন্য বিজয়ী ছিল, আপনি যদি ইউটিউব অ্যাপ্লিকেশন ইনস্টল করে থাকেন তবে এটির পরিবর্তে আপনি এটি ব্যবহার করতে চান কিনা তা জিজ্ঞাসা করে।
ত্রিস্তান ওয়ার্নার-স্মিথ

এই কোডটি ব্যবহার করুন আমি ইউটিউব এবং ব্রাউজারের জন্য ইন্টেন্ট চয়নকারীটি পাই। কীভাবে এটি গোপন করবেন? আমার কেবল ইউটিউব প্লেয়ারের সাথে সরাসরি লিঙ্ক করা দরকার।
প্রবীণ

@ প্রবীণ চন্দ্রশেকারণ ইউটিউব অ্যাপ্লিকেশনটি উপলভ্য নাও হতে পারে - ইন্টেন্টটি ব্যবহার করা সবচেয়ে ভাল এবং কোন ইনস্টলড অ্যাপ্লিকেশনগুলি অনুরোধ সমর্থন করে তা সিস্টেমটিকে কার্যকর করা উচিত।
cofiem

3
স্টার্টঅ্যাক্টিভিটি কল করার আগে আপনাকে ইন্টেন্টে সেটক্লাসনাম কল করতে হবে, যেমন: ইন্টেন্ট.ভিডিওওপ্লাই.সেটক্লাসনাম ("com.google.android.youtube", "com.google.android.youtube.PlayerActivity"); একটি কার্যকারী কোড উদাহরণের জন্য সানার উত্তর দেখুন।
প্রতিসম

ইউটিউব অ্যাপ্লিকেশন ইনস্টল করা একটি আসল ডিভাইসে এটি আমার পক্ষে কাজ করে না। এটি এখনও ওয়েব ব্রাউজারটি খোলে। নীচে বাইবেটির দ্বারা দৃষ্টিভঙ্গি যদিও কাজ করে। অথবা হয়ত প্রতিসম মন্তব্য, চেষ্টা করেনি।
ম্যাথিয়াস কনরাডেট

33

আমি এই সমস্যাটি কীভাবে সমাধান করেছি তা এখানে:

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("vnd.youtube://" + video_id));
startActivity(intent);

এখন যেহেতু আমি আরও কিছু গবেষণা করেছি, দেখে মনে হচ্ছে যে আমার কেবল কোলনের পরে দুটি স্ল্যাশের পরিবর্তে 'vnd.youtube:VIDEO_ID' দরকার ছিল (':' বনাম ': //'):

http://it-ride.blogspot.com/2010/04/android-youtube-intent.html

আমি বেশিরভাগ পরামর্শ এখানে চেষ্টা করেছিলাম এবং ব্যতিক্রমগুলি উত্থাপনকারী সমস্ত "প্রত্যক্ষ" পদ্ধতিগুলির সাথে তারা সত্যই খুব ভাল কাজ করে নি। আমি ধরে নেব যে, আমার পদ্ধতি অনুসারে, ইউটিউব অ্যাপটি ইনস্টল না করা থাকলে, অ্যাপটি ক্র্যাশ করা ছাড়া OS এর ডিফল্ট ফ্যালব্যাক অবস্থান রয়েছে। অ্যাপ্লিকেশনটি তাত্ত্বিকভাবে কেবলমাত্র ইউটিউব অ্যাপ্লিকেশন দিয়েই ডিভাইসগুলিতে চলছে তবে যেহেতু এটি কোনও সমস্যাবিহীন হওয়া উচিত।


হ্যালো, ইউটিউব ভিডিওগুলি ওয়েবউউতে না খেলার পরিবর্তে অ্যাপে চালানো কি সম্ভব?
বৃশ্চিক

@ স্কার্পিয়ন এমন সম্ভাবনা সহ ইউটিউব এপিআই রয়েছে।
ম্যাথিউইক

1
এটি দুর্দান্ত কাজ করে! তবে আপনার প্রথম লাইনে একটি ডান বন্ধনী অনুপস্থিত।
KostasC

18

আমার কোডটি ব্যবহার করুন .. আমি এই কোডটি ব্যবহার করে ইউটিউব ভিডিও খেলতে সক্ষম হয়েছি ... আপনাকে কেবল "ভিডিওআইডি" পরিবর্তনশীলতে ইউটিউব ভিডিও আইডি সরবরাহ করতে হবে ....

String videoId = "Fee5vbFLYM4";
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("vnd.youtube:"+videoId)); 
intent.putExtra("VIDEO_ID", videoId); 
startActivity(intent); 

3
এটি সরাসরি ইউটিউব অ্যাপ্লিকেশন শুরু করে, জেলিবিনে ক্রোম এবং ইউটিউবের মধ্যে চয়ন করতে পারেন এমন চয়নকারী মেনুটিকে বাইপাস করে।
r1k0

2
@ r1k0 হ্যাঁ .... এই কোডটি ইউটিউব ভিডিওটি সমস্ত ধরণের অ্যান্ড্রয়েড ওজে (কেবল জেলিবিনেই নয়) খেলতে সরাসরি ডিফল্ট ইউটিউব অ্যাপ্লিকেশনটি শুরু করবে।
সৌভাগ্য পাঠক

1
আপনার যদি একাধিক ইউটিউব প্লেয়ার অ্যাপ থাকে (উদাহরণস্বরূপ ফায়ারট्यूब) এটি আপনাকে চয়ন করতে সক্ষম করবে। শুধু বলছেন এবং এটি পরিষ্কার করে দিচ্ছেন।
jj_

11
Intent videoClient = new Intent(Intent.ACTION_VIEW);
videoClient.setData(Uri.parse("http://m.youtube.com/watch?v="+videoId));
startActivityForResult(videoClient, 1234);

ইউটিউবের videoIdভিডিও আইডিটি কোথায় খেলতে হবে। এই কোডটি মোটোরোলা মাইলস্টোনটিতে সূক্ষ্মভাবে কাজ করে ।

তবে মূলত আমরা যা করতে পারি তা হল আপনি যখন ইউটিউব অ্যাপ্লিকেশন শুরু করবেন তখন কী ক্রিয়াকলাপটি লোড হচ্ছে তা যাচাই করা এবং তদনুসারে প্যাকেজনাম এবং ক্লাসনামের বিকল্প দিন।


আমি নিম্নলিখিত ত্রুটি পাচ্ছি। ERROR/AndroidRuntime(1519): Caused by: android.content.ActivityNotFoundException: Unable to find explicit activity class {com.google.android.youtube/com.google.android.youtube.PlayerActivity}; have you declared this activity in your AndroidManifest.xml? দয়া করে এটি সমাধান করুন।
বিনোথকুমার অর্পুতরাজ

আপনার ডিভাইস কি? এই ক্রিয়াকলাপের নামটি কেবল একটি মটোরোলা মাইলস্টোন এর জন্য নির্দিষ্ট, তবে আপনি যদি ইউটিউব ডিবাগিং মোডে আপনার ডিভাইসে ইউটিউব ক্রিয়াকলাপ প্লাগের জন্য ক্রিয়াকলাপের নামটি দেখতে চান এবং আপনি ইউটিউব অ্যাপ্লিকেশনটিতে ক্লিক করেন তখন লগগ্যাট দেখতে পাবেন। এটি আপনাকে ক্রিয়াকলাপের নাম সহ প্যাকেজের নাম অলগন দেয়।
সানা

7

ইউটিউব (এবং বাজার অ্যাপ্লিকেশন) কেবলমাত্র বিশেষ আরএমএস ব্যবহার করার কথা, যা গুগল জি 1 এবং জি 2 এর জন্য প্রকাশ করেছে। দুর্ভাগ্যক্রমে, আপনি এমুলেটরটিতে ব্যবহৃত কোনওটির মতো ওপেনসোর্স-রমে এগুলি চালাতে পারবেন না। ভাল, সম্ভবত আপনি পারেন, তবে সরকারীভাবে সমর্থিত উপায়ে নয়।


আপনি কি অসমর্থিত উপায় জানেন?
আইজাক ওয়ালার

দুঃখিত, না। শুধু সম্ভাবনাটি উড়িয়ে দিতে চাইনি।
লেমি

6

সম্পাদনা: নীচের বাস্তবায়নে কমপক্ষে কয়েকটি এইচটিসি ডিভাইসে (তারা ক্র্যাশ করেছে) সমস্যা রয়েছে বলে প্রমাণিত হয়েছে। সেই কারণে আমি সেটক্লাসের নাম ব্যবহার করি না এবং অ্যাকশন চয়নকারী মেনুতে আটকে থাকি। আমি আমার পুরানো বাস্তবায়ন ব্যবহার করে দৃ strongly়ভাবে নিরুৎসাহিত করি।

পুরানো বাস্তবায়ন নিম্নলিখিত:

Intent intent = new Intent(android.content.Intent.ACTION_VIEW, Uri.parse(youtubelink));
if(Utility.isAppInstalled("com.google.android.youtube", getActivity())) {
    intent.setClassName("com.google.android.youtube", "com.google.android.youtube.WatchActivity");
}
startActivity(intent);

যেখানে ইউটিলিটি নিম্নলিখিত নিজস্ব মেথোড সহ আমার নিজস্ব ইউটিলিটি শ্রেণি:

public static boolean isAppInstalled(String uri, Context context) {
    PackageManager pm = context.getPackageManager();
    boolean installed = false;
    try {
        pm.getPackageInfo(uri, PackageManager.GET_ACTIVITIES);
        installed = true;
    } catch (PackageManager.NameNotFoundException e) {
        installed = false;
    }
    return installed;
}

প্রথমে আমি ইউটিউব ইনস্টল আছে কিনা তা ইনস্টল করা আছে কিনা তা যাচাই করে নিই, আমি অ্যান্ড্রয়েডকে বলি যে আমি কোন প্যাকেজটি আমার উদ্দেশ্য খুলতে পছন্দ করি।


ইউটিলিটি কী? আমি এটি একটি উপলভ্য আমদানি হিসাবে দেখছি না।
ইগরগানাপলস্কি

সম্পাদনার জন্য +1 একটি সুস্পষ্ট শ্রেণীর নাম ব্যবহার করা অবশ্যই বিশ্বাসযোগ্য নয়।
জিউলিও পিয়ানোস্টেলি

5

এটি খুঁজে পেয়েছি:

03-18 12:40:02.842: INFO/ActivityManager(68): Starting activity: Intent { action=android.intent.action.VIEW data=(URL TO A FLV FILE OF THE VIDEO) type=video/* comp={com.google.android.youtube/com.google.android.youtube.YouTubePlayer} (has extras) }

অসাধারণ! সুতরাং আপনি কি এর জন্য কেবল একটি সম্প্রচার রিসিভার তৈরি করেছেন?
ড্যান

4

পুরানো প্রশ্নের জবাব, কেবল আপনাকে বলছি যে প্যাকেজ পরিবর্তিত হয়েছে, আপডেটটি এখানে

Intent videoClient = new Intent(Intent.ACTION_VIEW);
videoClient.setData("VALID YOUTUBE LINK WITH HTTP");
videoClient.setClassName("com.google.android.youtube", "com.google.android.youtube.WatchActivity");
startActivity(videoClient);

এটি খুব ভালভাবে কাজ করে, তবে আপনি যখন বৈধ ইউটিউব ইউআরএল ইউআরএল দিয়ে ACTION_VIEW- এর সাথে সাধারণ অভিপ্রায় কল করেন ততক্ষণে ক্রিয়াকলাপ নির্বাচকটি পান।


3

কোনও ভিন্ন অ্যাপে ভিডিও চালানোর নিরাপদতম উপায় হ'ল প্রথমে প্যাকেজটি সমাধান করার চেষ্টা করা, অন্য কথায়, অ্যাপটি ডিভাইসে ইনস্টল করা আছে কিনা তা পরীক্ষা করে দেখুন। সুতরাং আপনি যদি ইউটিউবে কোনও ভিডিও চালাতে চান তবে আপনি এই জাতীয় কিছু করতে চান:

public void playVideo(String key){

    Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("vnd.youtube:" + key));

    // Check if the youtube app exists on the device
    if (intent.resolveActivity(getPackageManager()) == null) {
        // If the youtube app doesn't exist, then use the browser
        intent = new Intent(Intent.ACTION_VIEW,
                Uri.parse("http://www.youtube.com/watch?v=" + key));
    }

    startActivity(intent);
}


2
/**
 * Intent to open a YouTube Video
 * 
 * @param pm
 *            The {@link PackageManager}.
 * @param url
 *            The URL or YouTube video ID.
 * @return the intent to open the YouTube app or Web Browser to play the video
 */
public static Intent newYouTubeIntent(PackageManager pm, String url) {
    Intent intent;
    if (url.length() == 11) {
        // youtube video id
        intent = new Intent(Intent.ACTION_VIEW, Uri.parse("vnd.youtube://" + url));
    } else {
        // url to video
        intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
    }
    try {
        if (pm.getPackageInfo("com.google.android.youtube", 0) != null) {
            intent.setPackage("com.google.android.youtube");
        }
    } catch (NameNotFoundException e) {
    }
    return intent;
}

1

আপনি ঠিক দখল করতে পারেন WebViewClient

wvClient = new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
  if (url.startsWith("youtube:")) {
    String youtubeUrl = "http://www.youtube.com/watch?v="
    + url.Replace("youtube:", "");
  startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(youtubeUrl)));
}
return false;
}

আমার অ্যাপ্লিকেশন ভাল কাজ।


মনে রাখবেন যে আলসাসি - গুগল কখনও কখনও ওয়েব ভিউয়ের ভিতরে ইউটিউব ভিডিও খেলতে দেয় না। কারণ তারা অ্যান্ড্রয়েড অ্যাপে ইউটিউব ভিডিও খেলতে ইউটিউব এপিআই সরবরাহ করে। যদি আপনি ওয়েবভিউয়ের অভ্যন্তরে ইউটিউব ভিডিও খেলেন, তবে গুগল প্লেস্টোর থেকে আপনার অ্যাপ্লিকেশনটি সরিয়ে ফেলবে।
সন্তোষ দেবনাথ

1

এটা চেষ্টা কর:

public class abc extends Activity implements OnPreparedListener{

  /** Called when the activity is first created. */

  @Override
    public void onCreate(Bundle savedInstanceState)
  {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.youtube.com/watch?v=cxLG2wtE7TM")));          


    @Override
      public void onPrepared(MediaPlayer mp) {
        // TODO Auto-generated method stub

    }
  }
}

0

ইউটিউব অ্যাপ ইনস্টল করা থাকলে এটি কাজ করবে। যদি তা না হয় তবে কোনও চয়নকারী অন্যান্য অ্যাপ্লিকেশন নির্বাচন করতে দেখাবে:

Uri uri = Uri.parse( "https://www.youtube.com/watch?v=bESGLojNYSo" );
uri = Uri.parse( "vnd.youtube:" + uri.getQueryParameter( "v" ) );
startActivity( new Intent( Intent.ACTION_VIEW, uri ) );

0

এটা চেষ্টা কর,

WebView webview = new WebView(this); 

String htmlString = 
    "<html> <body> <embed src=\"youtube link\"; type=application/x-shockwave-flash width="+widthOfDevice+" height="+heightOfDevice+"> </embed> </body> </html>";

webview.loadData(htmlString ,"text/html", "UTF-8");

এটিও আমার পক্ষে কাজ করা হয়নি। এমুলেটরটিতে ফ্ল্যাশ প্লেয়ারের কোনও প্রয়োজনীয়তা রয়েছে কি?
আইকোডার

0

এই ফাংশনটি আমার জন্য দুর্দান্ত কাজ করে ... কেবলমাত্র ইউআরএল স্ট্রিংটি ফাংশনে পাস করুন:

void watch_video(String url)
{
    Intent yt_play = new Intent(Intent.ACTION_VIEW, Uri.parse(url))
    Intent chooser = Intent.createChooser(yt_play , "Open With");

    if (yt_play .resolveActivity(getPackageManager()) != null) {
                    startActivity(chooser);
                }
}

0

আপনি ইউটিউব অ্যাপ্লিকেশন ইনস্টল করা থাকলে ভিডিওটি খেলতে ইউটিউব অ্যান্ড্রয়েড প্লেয়ার এপিআই ব্যবহার করতে পারেন, অন্যথায় কেবল ব্যবহারকারীকে উপলব্ধ ওয়েব ব্রাউজারগুলি থেকে চয়ন করতে অনুরোধ করুন।

if(YouTubeIntents.canResolvePlayVideoIntent(mContext)){
                    mContext.startActivity(YouTubeIntents.createPlayVideoIntent(mContext, mVideoId));
}else {
    Intent webIntent = new Intent(Intent.ACTION_VIEW, 
           Uri.parse("http://www.youtube.com/watch?v=" + mVideoId));

    mContext.startActivity(webIntent);
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.