This repository has been archived by the owner on May 5, 2020. It is now read-only.
/
VideoTimeline.java
95 lines (76 loc) · 3 KB
/
VideoTimeline.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
package org.onursert.videotimeline;
import android.content.Context;
import android.graphics.Bitmap;
import android.media.MediaMetadataRetriever;
import android.net.Uri;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout;
import java.util.HashMap;
public class VideoTimeline extends LinearLayout {
private View rootView;
private LinearLayout linearLayout;
private MediaMetadataRetriever retriever;
private int totalDuration;
public VideoTimeline(Context context) {
super(context);
init();
}
public VideoTimeline(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
public VideoTimeline(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
init();
}
private void init() {
LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
rootView = inflater.inflate(R.layout.video_timeline, this, true);
linearLayout = rootView.findViewById(R.id.linear_layout);
retriever = new MediaMetadataRetriever();
}
public void setUri(Uri uri) {
retriever.setDataSource(getContext(), uri);
String duration = retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION);
if (duration != null) {
totalDuration = Integer.valueOf(duration);
} else {
totalDuration = 0;
}
}
public void setUrl(String url) {
retriever.setDataSource(url, new HashMap<String, String>());
String duration = retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION);
if (duration != null) {
totalDuration = Integer.valueOf(duration);
} else {
totalDuration = 0;
}
}
public void initialize() {
for (int i = 10; i < 100; i += 10) {
ImageView imageView = new ImageView(getContext());
imageView.setId(i);
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
Long newPosition = totalDuration * i * 10L;
Bitmap bitmap = retriever.getFrameAtTime(newPosition);
imageView.setImageBitmap(bitmap);
imageView.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT));
linearLayout.addView(imageView);
imageView.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
System.out.println(v.getId());
}
});
linearLayout.post(new Runnable() {
@Override
public void run() {
System.out.println(linearLayout.getWidth());
}
});
}
}
}