Commit 58c38b154379898e31ee899508f45c7022d649f2
1 parent
e7ab16fe
primer intento de reproducir: FAIL
Showing
2 changed files
with
63 additions
and
48 deletions
src/com/upc/pbe/upcnews/Directoris.java
@@ -4,7 +4,9 @@ import java.io.IOException; | @@ -4,7 +4,9 @@ import java.io.IOException; | ||
4 | import java.util.ArrayList; | 4 | import java.util.ArrayList; |
5 | 5 | ||
6 | import android.app.Activity; | 6 | import android.app.Activity; |
7 | +import android.content.ComponentName; | ||
7 | import android.content.Intent; | 8 | import android.content.Intent; |
9 | +import android.net.Uri; | ||
8 | import android.os.Bundle; | 10 | import android.os.Bundle; |
9 | import android.util.Log; | 11 | import android.util.Log; |
10 | import android.view.KeyEvent; | 12 | import android.view.KeyEvent; |
@@ -76,7 +78,21 @@ public class Directoris extends Activity implements OnItemClickListener { | @@ -76,7 +78,21 @@ public class Directoris extends Activity implements OnItemClickListener { | ||
76 | ArrayList<ParentList> m3u8parsed = p.parseFile(playlist); | 78 | ArrayList<ParentList> m3u8parsed = p.parseFile(playlist); |
77 | Log.d(TAG, "parsing completed"); | 79 | Log.d(TAG, "parsing completed"); |
78 | HLS h = new HLS(m3u8parsed,((UpcApp)getApplication()).getLocalPath()); | 80 | HLS h = new HLS(m3u8parsed,((UpcApp)getApplication()).getLocalPath()); |
79 | - h.start(); | 81 | + h.loadVideo(); |
82 | + /* | ||
83 | + * while(true) | ||
84 | + * { | ||
85 | + * String[] segment = h.next(); | ||
86 | + * if(segment == null) | ||
87 | + * { | ||
88 | + * break; | ||
89 | + * } | ||
90 | + * Log.d(TAG,segment[0]); | ||
91 | + * startPlayer(segment[0],segment[1]); | ||
92 | + */ | ||
93 | + String[] test = {"/sdcard/a.ts","LE TEST"}; | ||
94 | + startPlayer(test[0],test[1]); | ||
95 | + | ||
80 | } | 96 | } |
81 | catch (ErrorException e){ | 97 | catch (ErrorException e){ |
82 | Toast.makeText(this, e.getMessage(), Toast.LENGTH_SHORT).show(); | 98 | Toast.makeText(this, e.getMessage(), Toast.LENGTH_SHORT).show(); |
@@ -108,29 +124,15 @@ public class Directoris extends Activity implements OnItemClickListener { | @@ -108,29 +124,15 @@ public class Directoris extends Activity implements OnItemClickListener { | ||
108 | } | 124 | } |
109 | } | 125 | } |
110 | 126 | ||
111 | - public boolean onCreateOptionsMenu(Menu menu){ | ||
112 | - //Determina el funcionament al apretar la tecla d'opcions | ||
113 | - getMenuInflater().inflate(R.menu.menu, menu); | ||
114 | - Log.d(TAG, "Menu"); | ||
115 | - return true; | 127 | + private void startPlayer(String url, String title) { |
128 | + Intent i = new Intent(); | ||
129 | + i.setComponent(new ComponentName("me.abitno.vplayer.t", "me.abitno.vplayer.VideoActivity")); | ||
130 | + i.setAction("me.abitno.vplayer.action.VIEW"); | ||
131 | + i.setData(Uri.parse(url)); | ||
132 | + i.putExtra("displayName", title); | ||
133 | + startActivity(i); | ||
116 | } | 134 | } |
117 | - | ||
118 | - public boolean onOptionsItemSelected(MenuItem item){ | ||
119 | - //Determina el funcionament al clickar en el menu d'opcions | ||
120 | - switch (item.getItemId()){ | ||
121 | - case R.id.itemprefs: | ||
122 | - startActivity(new Intent(this, Prefs.class)); | ||
123 | - Log.d(TAG, "Preferences"); | ||
124 | - return true; | ||
125 | - case R.id.itemhelp: | ||
126 | - startActivity(new Intent(this, Help.class)); | ||
127 | - Log.d(TAG, "Help"); | ||
128 | - return true; | ||
129 | - default: | ||
130 | - return false; | ||
131 | - } | ||
132 | - } | ||
133 | - | 135 | + |
134 | public boolean onKeyDown(int keyCode, KeyEvent event) { | 136 | public boolean onKeyDown(int keyCode, KeyEvent event) { |
135 | //Determina el funcionament al apretar la tecla de tornar enrere | 137 | //Determina el funcionament al apretar la tecla de tornar enrere |
136 | if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0){ | 138 | if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0){ |
src/com/upc/pbe/upcnews/HLS.java
@@ -2,6 +2,9 @@ package com.upc.pbe.upcnews; | @@ -2,6 +2,9 @@ package com.upc.pbe.upcnews; | ||
2 | 2 | ||
3 | import java.util.ArrayList; | 3 | import java.util.ArrayList; |
4 | 4 | ||
5 | +import android.content.ComponentName; | ||
6 | +import android.content.Intent; | ||
7 | +import android.net.Uri; | ||
5 | import android.util.Log; | 8 | import android.util.Log; |
6 | 9 | ||
7 | //Gestor del protocol HTTP Live Streaming | 10 | //Gestor del protocol HTTP Live Streaming |
@@ -9,6 +12,8 @@ public class HLS { | @@ -9,6 +12,8 @@ public class HLS { | ||
9 | 12 | ||
10 | private static final String TAG = "HLS"; | 13 | private static final String TAG = "HLS"; |
11 | private ArrayList<ParentList> videos; | 14 | private ArrayList<ParentList> videos; |
15 | + private ArrayList<Segment> segments; | ||
16 | + private ArrayList<Video> qualities; | ||
12 | private int currentVideo ; | 17 | private int currentVideo ; |
13 | private int currentQuality; //0 es la mas alta | 18 | private int currentQuality; //0 es la mas alta |
14 | private int currentSegment; | 19 | private int currentSegment; |
@@ -25,31 +30,39 @@ public class HLS { | @@ -25,31 +30,39 @@ public class HLS { | ||
25 | bm = new BandwidthMeasurer(); | 30 | bm = new BandwidthMeasurer(); |
26 | } | 31 | } |
27 | 32 | ||
28 | - public void start(){ | ||
29 | - for(currentVideo = 0; currentVideo < videos.size(); currentVideo++){ | ||
30 | - ArrayList<Video> qualities = videos.get(currentVideo++).getLists(); | ||
31 | - while(!endReached){ | ||
32 | - ArrayList<Segment> segments = qualities.get(currentQuality).getSegments(); | ||
33 | - while(true){ | ||
34 | - Segment seg = segments.get(currentSegment++); | ||
35 | - Log.d(TAG, seg.getName() + " " + seg.getURL()); | ||
36 | - long startTime = System.currentTimeMillis(); | ||
37 | - //long segmentBytes = fd.Download(seg.getURL(),localFolder); | ||
38 | - long segmentBytes = 0; | ||
39 | - double bps = bm.Measure(segmentBytes,startTime); | ||
40 | - if((bps < qualities.get(currentQuality).getQuality()) && (bps != -1)){ | ||
41 | - currentQuality++; | ||
42 | - break; | ||
43 | - } | ||
44 | - /* | ||
45 | - * REPRODUCIR SEGMENTO | ||
46 | - */ | ||
47 | - if(currentSegment == segments.size()){ | ||
48 | - endReached = true; | ||
49 | - break; | ||
50 | - } | ||
51 | - } | ||
52 | - } | 33 | + public void loadVideo() |
34 | + { | ||
35 | + qualities = videos.get(currentVideo++).getLists(); | ||
36 | + segments = qualities.get(currentQuality).getSegments(); | ||
37 | + if(currentVideo == videos.size()) | ||
38 | + { | ||
39 | + endReached = true; | ||
53 | } | 40 | } |
54 | } | 41 | } |
42 | + | ||
43 | + public String[] next() | ||
44 | + { | ||
45 | + Segment seg = segments.get(currentSegment++); | ||
46 | + Log.d(TAG, seg.getName() + " " + seg.getURL()); | ||
47 | + long startTime = System.currentTimeMillis(); | ||
48 | + //long segmentBytes = fd.Download(seg.getURL(),localFolder); | ||
49 | + long segmentBytes = 0; | ||
50 | + double bps = bm.Measure(segmentBytes,startTime); | ||
51 | + if((bps < qualities.get(currentQuality).getQuality()) && (bps != -1)) | ||
52 | + { | ||
53 | + currentQuality++; | ||
54 | + } | ||
55 | + String[] data = new String[2]; | ||
56 | + data[0] = seg.getURL().substring(seg.getURL().lastIndexOf("/")+2, seg.getURL().length()); | ||
57 | + data[1] = seg.getName(); | ||
58 | + if(currentSegment == segments.size()) | ||
59 | + { | ||
60 | + if(endReached) | ||
61 | + { | ||
62 | + return null; | ||
63 | + } | ||
64 | + loadVideo(); | ||
65 | + } | ||
66 | + return data; | ||
67 | + } | ||
55 | } | 68 | } |
56 | \ No newline at end of file | 69 | \ No newline at end of file |