Am having you-tube links like http://www.youtube.com/v/YR71GnQ4CU4?f=videos&app=youtube_gdata , then how to convert it to RTSP format to play in VideoView.
Am searching gdata api with this: http://gdata.youtube.com/feeds/api/videos?&max-results=20&v=2&format=1&q="+ URLEncoder.encode(activity.criteria) but i cant find how to get related RTSP url.
I got my answer ..thanx to this
Element rsp = (Element)entry.getElementsByTagName("media:content").item(1);
String anotherurl=rsp.getAttribute("url");
In gdata api only we are getting this type of links : rtsp://v3.cache7.c.youtube.com/CiILENy73wIaGQlOCTh0GvUeYRMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp
These are playing in VideoView.
This might be a little late. Here is some working code for people having trouble.
try{
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(new URL(url).openStream());
doc.getDocumentElement ().normalize ();
NodeList content = doc.getElementsByTagName("media:content");
for(int i=0; i<content.getLength(); i++){
Element rsp = (Element)content.item(i);
result.add(rsp.getAttribute("url"));
}
}catch(Exception e){
Log.e("log_tag", "Error in http connection "+e.toString());
}
Below is the function which can get you RTSP link for the youtube video
public static String getUrlVideoRTSP(String urlYoutube) {
try {
String gdy = "http://gdata.youtube.com/feeds/api/videos/";
DocumentBuilder documentBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
String id = extractYoutubeId(urlYoutube);
URL url = new URL(gdy + id);
Log.i(MyActivity.class.getSimpleName(), url.toString());
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
Document doc = documentBuilder.parse(connection.getInputStream());
Element el = doc.getDocumentElement();
NodeList list = el.getElementsByTagName("media:content");///media:content
String cursor = urlYoutube;
for (int i = 0; i < list.getLength(); i++) {
Node node = list.item(i);
if (node != null) {
NamedNodeMap nodeMap = node.getAttributes();
HashMap<String, String> maps = new HashMap<String, String>();
for (int j = 0; j < nodeMap.getLength(); j++) {
Attr att = (Attr) nodeMap.item(j);
maps.put(att.getName(), att.getValue());
}
if (maps.containsKey("yt:format")) {
String f = maps.get("yt:format");
if (maps.containsKey("url")) {
cursor = maps.get("url");
}
if (f.equals("1"))
return cursor;
}
}
}
return cursor;
} catch (Exception ex) {
Log.e("Get Url Video RTSP Exception======>>", ex.toString());
}
return urlYoutube;
}
private static String extractYoutubeId(String url) throws MalformedURLException {
String id = null;
try {
String query = new URL(url).getQuery();
if (query != null) {
String[] param = query.split("&");
for (String row : param) {
String[] param1 = row.split("=");
if (param1[0].equals("v")) {
id = param1[1];
}
}
} else {
if (url.contains("embed")) {
id = url.substring(url.lastIndexOf("/") + 1);
}
}
} catch (Exception ex) {
Log.e("Exception", ex.toString());
}
return id;
}
Related
I want to parse XML which is received from a .net web service and store the parsed data into a string array. I tried so many times but the loop is terminating after one execution without any exception.
The XML which is received from web service is attached here.
<DocumentElement>
<PictureList>
<Id>1</Id>
<WorkId>1</WorkId>
<PictureUrl>"~/Admin/"</PictureUrl>
<Status>Active</Status>
<CreatedDateTime>2015-11-21T00:00:00+00:00</CreatedDateTime>
</PictureList>
</DocumentElement>
code which is used for parsing is given below
public void pictures(String st) {
DocumentBuilderFactory factory =DocumentBuilderFactory.newInstance();
DocumentBuilder builder;
builder = factory.newDocumentBuilder();
Document doc = builder.parse(new InputSource(new StringReader(st)));
Element env = doc.getDocumentElement();
NodeList nl = env.getElementsByTagName("PictureList");
lengthsem = nl.getLength();
length = 0;
Node n = nl.item(0);
NodeList nl_suc = n.getChildNodes();
length = nl_suc.getLength();
String[][] semres;
String semdata[][] = new String[lengthsem][36];
for (int i = 0; i < lengthsem; i++) {
n = nl.item(i);
nl_suc = n.getChildNodes();
length = nl_suc.getLength();
int count = 0;
for (int j = 0; j < length; j++) {
System.out.println("length inndr" +length);
Node n_suc = nl_suc.item(j);
String lab = n_suc.getNodeName();
Log.e("lab",lab);
Log.e("fhkhgfgfkhg", n_suc.getNodeName());
if (n_suc.getNodeType() == Node.ELEMENT_NODE) {
sem = Webxml.getElementText((Element) n_suc);
Log.e("iloufhkhghjk,ldlfdlll", sem);
Log.e("fhkhghjk,ldlfdlll", lab);
Node hasSub = nl_suc.item(10);
Log.e("fhkhghjksunbb", hasSub.getNodeName());
String sub = Webxml.getElementText((Element) hasSub);
if (lab.equals("Id")) {
semdata[i][0] = sem;
System.out.println("0 " + lab + i);
success = "true";
try {
j++;
System.out.println(j + "jvalueee");
}catch (Exception e){
System.out.println("exception");
}
Log.e("fhkhghjk,ldlfdlll", lab);
} else if (lab.equals("WorkId")) {
semdata[i][1] = sem;
System.out.println("0 " + lab + i);
success = "true";
Log.e("fhkhghjk,ldlfdlll", lab);
} else if (lab.equals("PictureUrl")) {
semdata[i][2] = sem;
System.out.println("0 " + lab + i);
success = "true";
Log.e("fhkhghjk,ldlfdlll", lab);
} else if (lab.equals("CreatedDateTime")) {
semdata[i][3] = sem;
System.out.println("0 " + lab + i);
success = "true";
Log.e("fhkhghjk,ldlfdlll", lab);
} else {
System.out.println("test111");
break;
}
}
}
}
Well i worked some kind of same data so i can suggest you this way. you can use it also.
String[][] strarray = new String[0][10];
try {
mDbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = mDbf.newDocumentBuilder();
is.setCharacterStream(new StringReader(xml));
mDocument = db.parse(is);
mDocument.getDocumentElement().normalize();
} catch (ParserConfigurationException e) {
e.printStackTrace();
} catch (SAXException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
NodeList nodeList = mDocument.getElementsByTagName("PictureList");
for (int i = 0; i < nodeList.getLength(); i++) {
Node node = nodeList.item(i);
if (node.getNodeType() == Node.ELEMENT_NODE) {
Element element = (Element) node;
strarray[0][i] = getValue("Id", element);
strarray[0][i] = getValue("WorkId", element));
strarray[0][i] = getValue("PictureUrl", element));
strarray[0][i] = getValue("Status", element));
strarray[0][i] = getValue("CreatedDateTime", element));
}
}
public String getValue(String stag, Element mElement) {
String value = "";
NodeList nlList = mElement.getElementsByTagName(stag).item(0)
.getChildNodes();
Node nValue = (Node) nlList.item(0);
if (nValue != null) {
value = nValue.getTextContent();
}
return value;
}
I changed it for string array. so it can be logically wrong somewhere.
I have an Rss feed app displaying title and description from xml. I'm parsing the xml and displaying the content inside webview. When i navigate to webview, i can't able to scroll the content. It's like static. Is there is way to scroll content inside webview?
webview:
title = (TextView) findViewById(R.id.title);
desc = (WebView) findViewById(R.id.desc);
// set webview properties
WebSettings ws = desc.getSettings();
ws.setLayoutAlgorithm(LayoutAlgorithm.SINGLE_COLUMN);
ws.getPluginState();
ws.setPluginState(PluginState.ON);
ws.setJavaScriptEnabled(true);
ws.setBuiltInZoomControls(true);
// Set the views
title.setText(feed.getItem(pos).getTitle());
desc.loadDataWithBaseURL("http://www.googleglass.gs/", feed
.getItem(pos).getDescription(), "text/html", "UTF-8", null);
Parsing:
public class DOMParser {
private RSSFeed _feed = new RSSFeed();
public RSSFeed parseXml(String xml) {
URL url = null;
try {
url = new URL(xml);
} catch (MalformedURLException e1) {
e1.printStackTrace();
}
try {
// Create required instances
DocumentBuilderFactory dbf;
dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
// Parse the xml
Document doc = db.parse(new InputSource(url.openStream()));
doc.getDocumentElement().normalize();
// Get all <item> tags.
NodeList nl = doc.getElementsByTagName("item");
int length = nl.getLength();
for (int i = 0; i < length; i++) {
Node currentNode = nl.item(i);
RSSItem _item = new RSSItem();
NodeList nchild = currentNode.getChildNodes();
int clength = nchild.getLength();
// Get the required elements from each Item
for (int j = 1; j < clength; j = j + 2) {
Node thisNode = nchild.item(j);
String theString = null;
String nodeName = thisNode.getNodeName();
theString = nchild.item(j).getFirstChild().getNodeValue();
if (theString != null) {
if ("title".equals(nodeName)) {
// Node name is equals to 'title' so set the Node
// value to the Title in the RSSItem.
_item.setTitle(theString);
}
else if ("content:encoded".equals(nodeName)) {
_item.setDescription(theString);
// Parse the html description to get the image url
String html = theString;
org.jsoup.nodes.Document docHtml = Jsoup
.parse(html);
Elements imgEle = docHtml.select("img");
_item.setImage(imgEle.attr("src"));
}
else if ("pubDate".equals(nodeName)) {
// We replace the plus and zero's in the date with
// empty string
String formatedDate = theString.replace(" +0000",
"");
_item.setDate(formatedDate);
}
}
}
// add item to the list
_feed.addItem(_item);
}
} catch (Exception e) {
}
// Return the final feed once all the Items are added to the RSSFeed
// Object(_feed).
return _feed;
}
}
You have to implement your own WebView and implement that functionality or you can use Native Google Glass WebBrowser with an Intent.
EDIT: You also can try to use native webBrowser with an intent:
Intent intent = new Intent(Intent.ACTION_VIEW);
String extension = android.webkit.MimeTypeMap.getFileExtensionFromUrl(Uri.fromFile(file).toString());
String mimetype = android.webkit.MimeTypeMap.getSingleton().getMimeTypeFromExtension(extension);
intent.setClassName("com.google.glass.browser", "com.google.glass.browser.WebBrowserActivity");
intent.setDataAndType(Uri.fromFile(file),mimetype);
startActivity(intent);
You create a HTML file with the content of your XML, you save it in the sdcard and then you open it with Intent.
I am trying to parse an xml but it is returning all the chld nodes that have tag "nature".But I just want to only those nodes whose cat is selcted.
My xml looks like :-
<NatureList>
<NatureCategory cat="Crimes Against People">
<Nature>
<Name>Aggravated Assault</Name>
</Nature>
<Nature>
<Name>Annoyance Phone Calls</Name>
</Nature>
<NatureCategory>
<NatureCategory ...NatureCategory>
and parsing is done like this :
Document doc = XmlParser.getDomElement(xml);
NodeList n = doc.getElementsByTagName("NatureCategory");
try {
for(int i=0; i<n.getLength();i++)
{
Element e = (Element) n.item(i);
if(e.getAttribute("cat").equals(spinn.getSelectedItem().toString()))
{
Log.i("sub1", spinn.getSelectedItem().toString() );
NodeList n1 = doc.getElementsByTagName("Nature");
for(int j=0; j<n1.getLength();j++)
{
Element e1 = (Element) n1.item(j);
subcategory.add(getValue(e1, "Name"));
}
}
// subcategory.add()
}
}
nodes1 = doc.getElementsByTagName("NatureList");
for (int i = 0; i < nodes1.getLength(); i++) {
ObjectClass cgro = new ObjectClass();
Element e = (Element)nodes1.item(i);
cgro.NatureCategory = XMLfunctions.getValue(e, "NatureCategory");//here u can compare with your spinner string if match then parse this NatureCategory or save oe any logic which u like
nodes1a = doc.getElementsByTagName("cat");
for(int j = 0; j < nodes1a.getLength(); j++ ){
ObjectClass1 cgro1 = new ObjectClass1();
Element e2= (Element) nodes1a.item(j);
cgro1.cat= XMLfunctions.getCharacterDataFromElement(e2);
ArrayListClass.ItemList1.add(cgro1);
}
ArrayListClass.ItemList2.add(cgro);
}
and class use for this
public class XMLfunctions {
public final static Document XMLfromString(String xml){
Document doc = null;
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
try {
DocumentBuilder db = dbf.newDocumentBuilder();
InputSource is = new InputSource();
is.setCharacterStream(new StringReader(xml));
doc = db.parse(is);
} catch (ParserConfigurationException e) {
System.out.println("XML parse error: " + e.getMessage());
return null;
} catch (SAXException e) {
System.out.println("Wrong XML file structure: " + e.getMessage());
return null;
} catch (IOException e) {
System.out.println("I/O exeption: " + e.getMessage());
return null;
}
return doc;
}
/** Returns element value
* #param elem element (it is XML tag)
* #return Element value otherwise empty String
*/
I think if form your XML like this it would be better:
<NatureList>
<NatureCategory>
<cat>Crimes Against People</cat>
<Nature>
<Name>Aggravated Assault</Name>
</Nature>
<Nature>
<Name>Annoyance Phone Calls</Name>
</Nature>
<NatureCategory>
Then get the cat tag and then test it.
I need to parse document using DOM parser in android. I was unable to print all the node values
My Sample XML is:`
<xml_api_reply version="1">
<news module_id="0" tab_id="0" mobile_row="0" mobile_zipped="1" row="0" section="0">
<title data="Top Stories"/>
<section_type data="0"/>
<news_entry>
<title data="BSE Sensex breaches 19000, Nifty above 5800"/>
<url data="http://in.reuters.com/article/2012/10/04/sensex-above-19000-on-reform-hopes- idINDEE89301O20121004"/>
<snippet data="| MUMBAI (Reuters) - The Nifty rose above 5800 points on Thursday, joining the Sensex in breaching key psychological levels, after continued government reform measures sparked hopes for continued action. Banks led gainers, with ICICI Bank (ICBK."/>
<source data="Reuters India"/>
<date data="3 hours ago"/>
<num_related data="145"/>
<cluster_url data="http://google.co.in/news/story?ncl=da6VmeBXmuquikM&hl=en"/>
</news_entry>
<news_entry>
<title data="Uncertainty over Kingfisher resuming operations tomorrow"/>
<url data="http://www.hindustantimes.com/India-news/NewDelhi/Uncertainty-over- Kingfisher-resuming-operations-tomorrow/Article1-939628.aspx"/>
<snippet data="Hopes of ailing Kingfisher Airlines resuming operations on Friday has faded with last ditch efforts by the management to persuade striking engineers and pilots to return to work failing to end the deadlock over the issue of non-payment of salaries for ..."/>
<source data="Hindustan Times"/>
<date data="1 hour ago"/>
<num_related data="993"/>
<cluster_url data="http://google.co.in/news/story?ncl=dzf460GzYKTOyxM&hl=en"/>
</news_entry>
</news>
</xml_api_reply>`
and I am using following code to parse the xml
xmlactivity.java
public class AndroidXMLParsingActivity extends ListActivity {
// All static variables
static final String URL = "http://www.google.co.in/ig/api?news&hl=en";
// XML node keys
static final String KEY_ITEM = "news"; // parent node
//static final String KEY_ID = "news_entry";
static final String KEY_NAME = "title ";
static final String KEY_COST = "url ";
static final String KEY_DESC = "snippet";
#Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ArrayList<HashMap<String, String>> menuItems = new ArrayList<HashMap<String, String>>();
XMLParser parser = new XMLParser();
String xml = parser.getXmlFromUrl(URL); // getting XML
Document doc = parser.getDomElement(xml); // getting DOM element
NodeList nl = doc.getElementsByTagName(KEY_ITEM);
// looping through all item nodes <item>
for (int i = 0; i < nl.getLength(); i++) {
// creating new HashMap
HashMap<String, String> map = new HashMap<String, String>();
Element e = (Element) nl.item(i);
// adding each child node to HashMap key => value
//map.put(KEY_ID, parser.getValue(e, KEY_ID));
map.put(KEY_NAME, parser.getValue(e, KEY_NAME));
//map.put(KEY_COST, parser.getValue(e, KEY_COST));
//map.put(KEY_DESC, parser.getValue(e, KEY_DESC));
// adding HashList to ArrayList
menuItems.add(map);
}
// Adding menuItems to ListView
/* ListAdapter adapter = new SimpleAdapter(this, menuItems,
R.layout.list_item,
new String[] { KEY_NAME, KEY_DESC, KEY_COST }, new int[] {
R.id.name, R.id.desciption, R.id.cost });*/
ListAdapter adapter = new SimpleAdapter(this, menuItems,
R.layout.list_item,
new String[] { KEY_NAME }, new int[] {
R.id.name});
setListAdapter(adapter);
// selecting single ListView item
ListView lv = getListView();
lv.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// getting values from selected ListItem
//String name = ((TextView) view.findViewById(R.id.name)).getText().toString();
//String cost = ((TextView) view.findViewById(R.id.cost)).getText().toString();
String description = ((TextView) view.findViewById(R.id.desciption)).getText().toString();
// Starting new intent
Intent in = new Intent(getApplicationContext(), SingleMenuItemActivity.class);
//in.putExtra(KEY_NAME, name);
//in.putExtra(KEY_COST, cost);
in.putExtra(KEY_DESC, description);
startActivity(in);
}
});
and xmlParser.java
public class XMLParser {
// constructor
public XMLParser() {
}
/**
* Getting XML from URL making HTTP request
* #param url string
* */
public String getXmlFromUrl(String url) {
String xml = null;
try {
// defaultHttpClient
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(url);
HttpResponse httpResponse = httpClient.execute(httpPost);
HttpEntity httpEntity = httpResponse.getEntity();
xml = EntityUtils.toString(httpEntity);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
// return XML
return xml;
}
/**
* Getting XML DOM element
* #param XML string
* */
public Document getDomElement(String xml){
Document doc = null;
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
try {
DocumentBuilder db = dbf.newDocumentBuilder();
InputSource is = new InputSource();
is.setCharacterStream(new StringReader(xml));
doc = db.parse(is);
} catch (ParserConfigurationException e) {
Log.e("Error: ", e.getMessage());
return null;
} catch (SAXException e) {
Log.e("Error: ", e.getMessage());
return null;
} catch (IOException e) {
Log.e("Error: ", e.getMessage());
return null;
}
return doc;
}
/** Getting node value
* #param elem element
*/
public final String getElementValue( Node elem ) {
Node child;
if( elem != null){
if (elem.hasChildNodes()){
for( child = elem.getFirstChild(); child != null; child = child.getNextSibling() ){
if( child.getNodeType() == Node.TEXT_NODE ){
return child.getNodeValue();
}
}
}
}
return "";
}
/**
* Getting node value
* #param Element node
* #param key string
* */
public String getValue(Element item, String str) {
NodeList n = item.getElementsByTagName(str);
return this.getElementValue(n.item(0));
}
}
please help me . what is the problem and suggestion
thanks in advance!!!!!!!!!
//Try this code..
public String getXmlFromUrl(String url) {
String xml = null;
try {
// defaultHttpClient
URLConnection conn = null;
InputStream inputStream = null;
URL urls = new URL(url);
conn = urls.openConnection();
conn.setConnectTimeout(10000);
HttpURLConnection httpConn = (HttpURLConnection) conn;
httpConn.setRequestMethod("GET");
httpConn.setConnectTimeout(10000);
httpConn.connect();
if (httpConn.getResponseCode() == HttpURLConnection.HTTP_OK) {
inputStream = httpConn.getInputStream();
}
BufferedReader in = new BufferedReader(new InputStreamReader(inputStream));
StringWriter writer=new StringWriter();
String line="";
while ( null!=(line=in.readLine())){
writer.write(line);
}
xml =writer.toString();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return xml;
}
public Document getDomElement(String xml){
Document doc = null;
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
try {
DocumentBuilder db = dbf.newDocumentBuilder();
doc = db.parse(new InputSource(new StringReader(xml)));
doc.normalize();
//InputSource is = new InputSource();
// is.setCharacterStream(new StringReader(xml));
// doc = db.parse(is);
} catch (ParserConfigurationException e) {
Log.e("Error: ", e.getMessage());
return null;
} catch (SAXException e) {
Log.e("Error: ", e.getMessage());
return null;
} catch (IOException e) {
Log.e("Error: ", e.getMessage());
return null;
}
return doc;
}
public final String getElementValue(Node elem) {
Node child;
if (elem != null) {
if (elem.hasChildNodes()) {
for (child = elem.getFirstChild(); child != null; child = child
.getNextSibling()) {
if (child.getNodeType() == Node.TEXT_NODE || child.getNodeType() == Node.CDATA_SECTION_NODE) {
return child.getTextContent();
}
}
}
}
return "";
}
// All static variables
static final String URL = "http://www.google.co.in/ig/api?news&hl=en";
// XML node keys
static final String KEY_ITEM = "news"; // parent node
static final String KEY_ID = "news_entry";
static final String KEY_NAME = "title";
static final String KEY_COST = "url";
static final String KEY_DESC = "snippet";
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ArrayList<HashMap<String, String>> menuItems = new ArrayList<HashMap<String, String>>();
XMLParser parser = new XMLParser();
String xml = parser.getXmlFromUrl(URL); // getting XML
Document doc = parser.getDomElement(xml); // getting DOM element
NodeList nl = doc.getElementsByTagName(KEY_ITEM);
for (int i = 0; i < nl.getLength(); i++) {
HashMap<String, String> map = new HashMap<String, String>();
Element e = (Element) nl.item(i);
NamedNodeMap attributes = e.getAttributes();
System.out.println("attrlength"+attributes.getLength());
for (int a = 0; a < attributes.getLength(); a++)
{
Node theAttribute = attributes.item(a);
System.out.println(theAttribute.getNodeName() + "=" + theAttribute.getNodeValue());
}
NodeList nl1=e.getElementsByTagName(KEY_ID);
System.out.println("keyId"+nl1.getLength());
for(int j=0;j<nl1.getLength();j++)
{
Element e1 = (Element) nl1.item(j);
NodeList n = e1.getElementsByTagName(KEY_NAME);
for (int k = 0; k < n.getLength(); k++) {
Element e2 = (Element) n.item(k);
// System.out.println("node Title value"+e2.getNodeName());
NamedNodeMap attributes2 = e2.getAttributes();
// System.out.println("attrlength"+attributes2.getLength());
for (int a = 0; a < attributes2.getLength(); a++)
{
Node theAttribute = attributes2.item(a);
System.out.println(theAttribute.getNodeName() + "=" + theAttribute.getNodeValue());
}
}
NodeList n1 = e1.getElementsByTagName(KEY_COST);
// System.out.println("title "+n.getLength());
for (int k = 0; k < n1.getLength(); k++) {
Element e2 = (Element) n1.item(k);
// System.out.println("node Url value");
NamedNodeMap attributes2 = e2.getAttributes();
// System.out.println("attrlength"+attributes2.getLength());
for (int a = 0; a < attributes2.getLength(); a++)
{
Node theAttribute = attributes2.item(a);
System.out.println(theAttribute.getNodeName() + "=" + theAttribute.getNodeValue());
}}
NodeList n2 = e1.getElementsByTagName(KEY_DESC);
// System.out.println("title "+n.getLength());
for (int k = 0; k < n2.getLength(); k++) {
Element e2 = (Element) n2.item(k);
// System.out.println("node snippet value"+e2.getNodeName());
NamedNodeMap attributes2 = e2.getAttributes();
// System.out.println("attrlength"+attributes2.getLength());
for (int a = 0; a < attributes2.getLength(); a++)
{
Node theAttribute = attributes2.item(a);
System.out.println(theAttribute.getNodeName() + "=" + theAttribute.getNodeValue());
}
}
}
menuItems.add(map);
}
}
How to Play Youtube Video on VideoView?
I have fetched many youtube video url's using rss(xml Parsing) from the following url:-
http://gdata.youtube.com/feeds/base/videos/-/justinbieber?orderby=published&alt=rss&client=ytapi-youtube-rss-redirect&v=2
but the problem is this that http link is not played in videoview.
Please Help me.
You want to convert your gdata URL into rtsp format. Following function convert your URL into rtsp format.
public static String getUrlVideoRTSP(String urlYoutube) {
try {
String gdy = "http://gdata.youtube.com/feeds/base/videos/-/justinbieber?orderby=published&alt=rss&client=ytapi-youtube-rss-redirect&v=2";
DocumentBuilder documentBuilder = DocumentBuilderFactory
.newInstance().newDocumentBuilder();
String id = extractYoutubeId(urlYoutube);
URL url = new URL(gdy + id);
HttpURLConnection connection = (HttpURLConnection) url
.openConnection();
Document doc = documentBuilder.parse(connection.getInputStream());
Element el = doc.getDocumentElement();
NodeList list = el.getElementsByTagName("media:content");// /media:content
String cursor = urlYoutube;
for (int i = 0; i < list.getLength(); i++) {
Node node = list.item(i);
if (node != null) {
NamedNodeMap nodeMap = node.getAttributes();
HashMap<String, String> maps = new HashMap<String, String>();
for (int j = 0; j < nodeMap.getLength(); j++) {
Attr att = (Attr) nodeMap.item(j);
maps.put(att.getName(), att.getValue());
}
if (maps.containsKey("yt:format")) {
String f = maps.get("yt:format");
if (maps.containsKey("url")) {
cursor = maps.get("url");
}
if (f.equals("1"))
return cursor;
}
}
}
return cursor;
} catch (Exception ex) {
Log.e("Get Url Video RTSP Exception======>>", ex.toString());
}
return urlYoutube;
}
private static String extractYoutubeId(String url) {
return url;
}
And the complete example show how to get videos from Youtube channel in listview is click here