Commit 881516aa93856ef39d16d404a4b16f72610aefdc
1 parent
eafc5031
--no commit message
Showing
7 changed files
with
193 additions
and
40 deletions
.settings/org.eclipse.jdt.core.prefs
1 | -eclipse.preferences.version=1 | |
2 | -org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5 | |
3 | -org.eclipse.jdt.core.compiler.compliance=1.5 | |
4 | -org.eclipse.jdt.core.compiler.source=1.5 | |
1 | +eclipse.preferences.version=1 | |
2 | +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled | |
3 | +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5 | |
4 | +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve | |
5 | +org.eclipse.jdt.core.compiler.compliance=1.5 | |
6 | +org.eclipse.jdt.core.compiler.debug.lineNumber=generate | |
7 | +org.eclipse.jdt.core.compiler.debug.localVariable=generate | |
8 | +org.eclipse.jdt.core.compiler.debug.sourceFile=generate | |
9 | +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error | |
10 | +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error | |
11 | +org.eclipse.jdt.core.compiler.source=1.5 | ... | ... |
src/com/upc/pbe/upcnews/ErrorException.java
0 → 100644
src/com/upc/pbe/upcnews/MainActivity.java
... | ... | @@ -18,7 +18,7 @@ public class MainActivity extends Activity implements OnClickListener { |
18 | 18 | |
19 | 19 | Button buttonDescarrega; |
20 | 20 | String file = "ejemplo.xml"; |
21 | - String folder = "Environment.getExternalStorageDirectory.getPath()"; // hauria de ser /sdcard/downloads | |
21 | + String folder = "Environment.getExternalStorageDirectory.getPath()"; | |
22 | 22 | TextView showText, showRoute; |
23 | 23 | |
24 | 24 | @Override | ... | ... |
src/com/upc/pbe/upcnews/Parser.java
... | ... | @@ -11,9 +11,9 @@ public class Parser |
11 | 11 | |
12 | 12 | } |
13 | 13 | |
14 | - public void setPlaylist(Playlist m3u8) | |
14 | + public void setPlaylist(Playlist pls) | |
15 | 15 | { |
16 | - playlist = m3u8; | |
16 | + playlist = pls; | |
17 | 17 | } |
18 | 18 | |
19 | 19 | public Playlist getPlaylist() |
... | ... | @@ -21,54 +21,92 @@ public class Parser |
21 | 21 | return playlist; |
22 | 22 | } |
23 | 23 | |
24 | - public void parseLine(String line) | |
24 | + public void parseLine(String line) throws ErrorException, WarningException | |
25 | 25 | { |
26 | + Playlist pls = getPlaylist(); | |
26 | 27 | int currentLine = 0; |
27 | - boolean m3u8Validated = false; | |
28 | - if(true) //NIGGRADA PER QUE TIRI, JA HO MIRARÉ | |
28 | + int currentSegment = 0; | |
29 | + boolean expectSegment = false; | |
30 | + | |
31 | + if(pls == null) | |
32 | + { | |
33 | + throw new ErrorException("Playlist uninitialized"); | |
34 | + } | |
35 | + | |
36 | + if(line.isEmpty()) | |
29 | 37 | { |
30 | 38 | currentLine++; |
31 | 39 | return; |
32 | 40 | } |
33 | 41 | else |
34 | 42 | { |
35 | - if(!m3u8Validated) | |
43 | + if(!pls.getValidated()) | |
36 | 44 | { |
37 | 45 | if(line.equals(STARTWORD)) |
38 | 46 | { |
39 | - m3u8Validated = true; | |
47 | + pls.setValidated(true); | |
48 | + } | |
49 | + else | |
50 | + { | |
51 | + throw new ErrorException("Playlist is not valid"); | |
40 | 52 | } |
41 | 53 | } |
54 | + else | |
55 | + { | |
56 | + if(line.charAt(0) == '#') | |
57 | + { | |
58 | + if(line.substring(0,4).equals("#EXT")) | |
59 | + { | |
60 | + String[] extTag = line.split(":"); | |
61 | + //switch(extTag[0]) Esto no se puede usar hasta JDK7 y Android no lo permite, diffikultyz??? | |
62 | + if(extTag[0].equals("#EXT-X-MEDIA-SEQUENCE")) | |
63 | + { | |
64 | + pls.setSequence(Integer.parseInt(extTag[1])); | |
65 | + } | |
66 | + else if(extTag[0].equals("#EXT-X-TARGETDURATION")) | |
67 | + { | |
68 | + pls.setMaxDuration(Integer.parseInt(extTag[1])); | |
69 | + } | |
70 | + | |
71 | + else if(extTag[0].equals("#EXTINF")) | |
72 | + { | |
73 | + String[] args = extTag[1].split(","); | |
74 | + int duration = Integer.parseInt(args[0]); | |
75 | + if (duration > pls.getMaxDuration()) | |
76 | + { | |
77 | + throw new ErrorException("Segment " + currentSegment + " on line " + currentLine | |
78 | + +" exceeds max duration"); | |
79 | + } | |
80 | + Segment s = new Segment(duration); | |
81 | + s.setName(args[1]); | |
82 | + pls.getSegments().add(s); | |
83 | + currentSegment++; | |
84 | + expectSegment = true; | |
85 | + } | |
86 | + | |
87 | + else if(extTag[0].equals("#EXT-X-STREAM-INF")) | |
88 | + { | |
89 | + | |
90 | + } | |
91 | + | |
92 | + else if(extTag[0].equals("#EXT-X-ENDLIST")) | |
93 | + { | |
94 | + //END REACHED, IGNORE AND LET THE FILE REACH EOF | |
95 | + } | |
96 | + | |
97 | + else | |
98 | + { | |
99 | + throw new WarningException("Tag not implemented"); | |
100 | + } | |
101 | + } | |
102 | + | |
103 | + } | |
104 | + | |
105 | + } | |
42 | 106 | } |
43 | 107 | |
44 | 108 | |
45 | - /*else | |
46 | - if [[ $M3U8_VALIDATED -eq 0 ]]; then | |
47 | - if [[ $line == "#EXTM3U" ]]; then | |
48 | - M3U8_VALIDATED=1 | |
49 | - else | |
50 | - echo "ERROR: This is not an m3u8 file!!" | |
51 | - exit 1 | |
52 | - fi | |
53 | - else | |
54 | - if [[ `echo $line | head -c1` == "#" ]]; then | |
55 | - if [[ `echo $line | head -c4` == "#EXT" ]]; then | |
56 | - case `echo $line | cut -d':' -f 1` in | |
57 | - "#EXT-X-MEDIA-SEQUENCE") | |
58 | - SEQUENCE_FIRST=`echo $line | cut -d':' -f 2`; | |
59 | - echo "INFO: First element to be played is: $SEQUENCE_FIRST";; | |
60 | - "#EXT-X-TARGETDURATION") | |
61 | - MAX_DURATION=`echo $line | cut -d':' -f 2`; | |
62 | - echo "INFO: Maximum segment duration is: $MAX_DURATION";; | |
63 | - "#EXTINF") | |
64 | - DURATION=`echo $line | cut -d':' -f 2 | cut -d',' -f 1` | |
65 | - if [[ $DURATION > $MAX_DURATION ]]; then | |
66 | - echo "ERROR: Segment $CURRENT_SEGMENT on line $CURRENT_LINE is larger than EXT-X-TARGETDURATION" | |
67 | - exit 1 | |
68 | - else | |
69 | - NAME=`echo $line | cut -d':' -f 2 | cut -d',' -f 2` | |
70 | - EXTINF=1 | |
71 | - fi;; | |
109 | + /* | |
72 | 110 | "#EXT-X-STREAM-INF") |
73 | 111 | EXTXSTREAM=1 |
74 | 112 | PROGRAMID="" | ... | ... |
src/com/upc/pbe/upcnews/Playlist.java
1 | 1 | package com.upc.pbe.upcnews; |
2 | 2 | |
3 | +import java.util.ArrayList; | |
4 | + | |
3 | 5 | public class Playlist |
4 | 6 | { |
5 | - | |
7 | + private boolean validated; | |
8 | + private int sequenceFirst; | |
9 | + private int maxDuration; | |
10 | + private ArrayList<Segment> segments; | |
11 | + | |
12 | + public Playlist() | |
13 | + { | |
14 | + validated = false; | |
15 | + segments = new ArrayList<Segment>(); | |
16 | + } | |
17 | + | |
18 | + public void setValidated(boolean val) | |
19 | + { | |
20 | + validated = val; | |
21 | + } | |
22 | + | |
23 | + public boolean getValidated() | |
24 | + { | |
25 | + return validated; | |
26 | + } | |
27 | + | |
28 | + public void setSequence(int seq) | |
29 | + { | |
30 | + sequenceFirst = seq; | |
31 | + } | |
32 | + | |
33 | + public int getSequence() | |
34 | + { | |
35 | + return sequenceFirst; | |
36 | + } | |
37 | + | |
38 | + public void setMaxDuration(int dur) | |
39 | + { | |
40 | + maxDuration = dur; | |
41 | + } | |
42 | + | |
43 | + public int getMaxDuration() | |
44 | + { | |
45 | + return maxDuration; | |
46 | + } | |
47 | + | |
48 | + public ArrayList<Segment> getSegments() | |
49 | + { | |
50 | + return segments; | |
51 | + } | |
6 | 52 | } |
53 | + | ... | ... |
src/com/upc/pbe/upcnews/Segment.java
0 → 100644
1 | +package com.upc.pbe.upcnews; | |
2 | + | |
3 | +import java.net.MalformedURLException; | |
4 | +import java.net.URL; | |
5 | + | |
6 | +public class Segment | |
7 | +{ | |
8 | + private String name; | |
9 | + private int duration; | |
10 | + private URL url; | |
11 | + | |
12 | + public Segment(int dur) | |
13 | + { | |
14 | + name = ""; | |
15 | + duration = dur; | |
16 | + } | |
17 | + | |
18 | + public void setName(String nam) | |
19 | + { | |
20 | + name = nam; | |
21 | + } | |
22 | + | |
23 | + public String getName() | |
24 | + { | |
25 | + return name; | |
26 | + } | |
27 | + | |
28 | + public int getDuration() | |
29 | + { | |
30 | + return duration; | |
31 | + } | |
32 | + public void setURL(String url) throws MalformedURLException | |
33 | + { | |
34 | + this.url = new URL(url); | |
35 | + } | |
36 | + | |
37 | + public URL getURL() | |
38 | + { | |
39 | + return url; | |
40 | + } | |
41 | +} | ... | ... |
src/com/upc/pbe/upcnews/WarningException.java
0 → 100644