Skip to content

Commit 4e6e149

Browse files
committed
更新demo
1 parent d7d5706 commit 4e6e149

11 files changed

Lines changed: 182 additions & 46 deletions

File tree

app/build.gradle

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,13 @@ android {
99
versionCode 1
1010
versionName "1.0"
1111
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
12+
ndk {
13+
//目前手机主流cpu架构是armeabi-v7a,所以通常情况下只考虑armeabi-v7a(除非特殊情况,比如TBS只有armeabi so库)
14+
// https://zhuanlan.zhihu.com/p/26833002
15+
// 1,如果同时保留 armeabi 和 armeabi-v7a 两个文件夹,则必须保证这两个文件夹中 .so 数量一致
16+
// 2,如果只存在armeabi-v7a,则对只提供 armeabi 版本的第三方 .so,原样复制一份到 armeabi-v7a 文件夹
17+
abiFilters 'armeabi-v7a'
18+
}
1219
}
1320
buildTypes {
1421
release {

app/src/main/AndroidManifest.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@
7373
android:name=".ui.ViewPagerPlayActivity"
7474
android:screenOrientation="portrait"/>
7575
<activity
76-
android:name=".ui.TestPlayActivity"
76+
android:name=".ui.MusicPlayActivity"
7777
android:exported="true"/>
7878
<activity android:name=".ui.MultiPlayActivity" />
7979
</application>

app/src/main/java/com/kk/taurus/avplayer/HomeActivity.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313

1414
import com.kk.taurus.avplayer.ui.InputUrlPlayActivity;
1515
import com.kk.taurus.avplayer.ui.MultiPlayActivity;
16+
import com.kk.taurus.avplayer.ui.MusicPlayActivity;
1617
import com.kk.taurus.avplayer.ui.ViewPagerPlayActivity;
1718
import com.kk.taurus.avplayer.ui.listplay.MultiListActivity;
1819
import com.kk.taurus.avplayer.ui.ShareAnimationActivityA;
@@ -96,6 +97,10 @@ public void multiVideoPlay(View view){
9697
intentTo(MultiPlayActivity.class);
9798
}
9899

100+
public void musicPlay(View view){
101+
intentTo(MusicPlayActivity.class);
102+
}
103+
99104
public void viewPagerPlay(View view){
100105
intentTo(ViewPagerPlayActivity.class);
101106
}
Lines changed: 119 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,119 @@
1+
package com.kk.taurus.avplayer.ui;
2+
3+
import android.graphics.Color;
4+
import android.media.AudioManager;
5+
import android.media.audiofx.Visualizer;
6+
import android.os.Bundle;
7+
import android.text.TextUtils;
8+
import android.view.View;
9+
import android.widget.EditText;
10+
import android.widget.Toast;
11+
12+
import androidx.annotation.Nullable;
13+
import androidx.appcompat.app.AppCompatActivity;
14+
15+
import com.kk.taurus.avplayer.R;
16+
import com.kk.taurus.avplayer.view.VisualizerView;
17+
import com.kk.taurus.playerbase.AVPlayer;
18+
import com.kk.taurus.playerbase.entity.DataSource;
19+
import com.kk.taurus.playerbase.event.OnPlayerEventListener;
20+
21+
public class MusicPlayActivity extends AppCompatActivity implements OnPlayerEventListener {
22+
23+
private AVPlayer mPlayer;
24+
private EditText mEtUrl;
25+
26+
private Visualizer mVisualizer;
27+
private VisualizerView mMusicWave;
28+
29+
private byte[] waveType = new byte[]{
30+
VisualizerView.WAVE_TYPE_BROKEN_LINE,
31+
VisualizerView.WAVE_TYPE_RECTANGLE,
32+
VisualizerView.WAVE_TYPE_CURVE};
33+
34+
private int typeIndex;
35+
36+
@Override
37+
protected void onCreate(@Nullable Bundle savedInstanceState) {
38+
super.onCreate(savedInstanceState);
39+
setContentView(R.layout.activity_test_play);
40+
mEtUrl = findViewById(R.id.music_url_et);
41+
mMusicWave = findViewById(R.id.visualizerView);
42+
43+
setVolumeControlStream(AudioManager.STREAM_MUSIC);
44+
45+
mPlayer = new AVPlayer();
46+
mPlayer.setOnPlayerEventListener(this);
47+
48+
initMusicWave();
49+
}
50+
51+
@Override
52+
public void onPlayerEvent(int eventCode, Bundle bundle) {
53+
switch (eventCode){
54+
case OnPlayerEventListener.PLAYER_EVENT_ON_PREPARED:
55+
releaseVisualizer();
56+
updateVisualizer();
57+
break;
58+
}
59+
}
60+
61+
private void initMusicWave() {
62+
mMusicWave.setWaveType(waveType[typeIndex]);
63+
mMusicWave.setColors(new int[]{Color.YELLOW, Color.BLUE});
64+
mMusicWave.setOnClickListener(new View.OnClickListener() {
65+
@Override
66+
public void onClick(View v) {
67+
typeIndex++;
68+
typeIndex %= waveType.length;
69+
mMusicWave.setWaveType(waveType[typeIndex]);
70+
}
71+
});
72+
}
73+
74+
private void releaseVisualizer() {
75+
if(mVisualizer!=null){
76+
mVisualizer.release();
77+
}
78+
}
79+
80+
private void updateVisualizer() {
81+
mVisualizer = new Visualizer(mPlayer.getAudioSessionId());
82+
mVisualizer.setCaptureSize(Visualizer.getCaptureSizeRange()[1]);
83+
mVisualizer.setDataCaptureListener(
84+
new Visualizer.OnDataCaptureListener() {
85+
public void onWaveFormDataCapture(Visualizer visualizer,
86+
byte[] bytes, int samplingRate) {
87+
mMusicWave.updateVisualizer(bytes);
88+
}
89+
90+
public void onFftDataCapture(Visualizer visualizer,
91+
byte[] bytes, int samplingRate) {
92+
93+
}
94+
}, Visualizer.getMaxCaptureRate() / 2, true, false);
95+
mVisualizer.setEnabled(true);
96+
}
97+
98+
public void startPlay(View view){
99+
String url = mEtUrl.getText().toString();
100+
if(TextUtils.isEmpty(url)){
101+
Toast.makeText(this, "please input url", Toast.LENGTH_SHORT).show();
102+
return;
103+
}
104+
DataSource dataSource = new DataSource();
105+
dataSource.setData(url);
106+
mPlayer.reset();
107+
mPlayer.setDataSource(dataSource);
108+
mPlayer.start();
109+
}
110+
111+
@Override
112+
protected void onDestroy() {
113+
super.onDestroy();
114+
mPlayer.destroy();
115+
releaseVisualizer();
116+
}
117+
118+
119+
}

app/src/main/java/com/kk/taurus/avplayer/ui/SplashActivity.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,9 @@ public void run() {
3434
.addRequestCode(100)
3535
.permissions(
3636
Manifest.permission.READ_EXTERNAL_STORAGE,
37-
Manifest.permission.WRITE_EXTERNAL_STORAGE
37+
Manifest.permission.WRITE_EXTERNAL_STORAGE,
38+
Manifest.permission.RECORD_AUDIO,
39+
Manifest.permission.MODIFY_AUDIO_SETTINGS
3840
)
3941
.request();
4042
}

app/src/main/java/com/kk/taurus/avplayer/ui/TestPlayActivity.java

Lines changed: 0 additions & 34 deletions
This file was deleted.

app/src/main/res/layout/activity_home.xml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,18 @@
8080
android:textSize="16sp"
8181
android:textColor="@color/buttonTextColor"/>
8282

83+
<Button
84+
android:id="@+id/tv_music_play"
85+
android:layout_width="match_parent"
86+
android:layout_height="50dp"
87+
android:layout_marginTop="10dp"
88+
android:gravity="center"
89+
android:onClick="musicPlay"
90+
android:textAllCaps="false"
91+
android:text="音乐播放"
92+
android:textSize="16sp"
93+
android:textColor="@color/buttonTextColor"/>
94+
8395
<TextView
8496
android:id="@+id/tv_avPlayer"
8597
android:layout_width="match_parent"

app/src/main/res/layout/activity_input_url_play.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
android:layout_width="0dp"
2121
android:layout_height="match_parent"
2222
android:hint="http://"
23-
android:text="http://"
23+
android:text="http://cctvalih5ca.v.myalicdn.com/live/cctv1_2/index.m3u8"
2424
android:paddingLeft="16dp"
2525
style="@style/MyEditText"
2626
android:layout_weight="1"/>
Lines changed: 32 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,37 @@
11
<?xml version="1.0" encoding="utf-8"?>
2-
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
2+
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
33
android:layout_width="match_parent"
4-
android:layout_height="match_parent">
4+
android:layout_height="match_parent"
5+
android:orientation="vertical"
6+
android:background="#000000"
7+
android:padding="16dp">
58

6-
<com.kk.taurus.playerbase.widget.BaseVideoView
7-
android:id="@+id/testVideoView"
9+
<EditText
10+
android:id="@+id/music_url_et"
811
android:layout_width="match_parent"
9-
android:layout_height="match_parent"
10-
android:background="#000000"/>
12+
android:layout_height="40dp"
13+
android:background="#AAAAAA"
14+
android:singleLine="true"
15+
android:padding="5dp"
16+
android:hint="url"
17+
android:text="http://music.163.com/song/media/outer/url?id=562598065.mp3"/>
1118

12-
</RelativeLayout>
19+
<Button
20+
android:layout_width="match_parent"
21+
android:layout_height="40dp"
22+
android:layout_marginTop="10dp"
23+
android:background="@color/colorPrimary"
24+
android:onClick="startPlay"
25+
android:textSize="16sp"
26+
android:textColor="#FFFFFF"
27+
android:text="PLAY"/>
28+
29+
<com.kk.taurus.avplayer.view.VisualizerView
30+
android:id="@+id/visualizerView"
31+
android:layout_width="match_parent"
32+
android:layout_height="0dp"
33+
android:layout_marginTop="80dp"
34+
android:layout_marginBottom="100dp"
35+
android:layout_weight="1"/>
36+
37+
</LinearLayout>

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ buildscript {
77
jcenter()
88
}
99
dependencies {
10-
classpath 'com.android.tools.build:gradle:3.3.2'
10+
classpath 'com.android.tools.build:gradle:3.6.2'
1111
classpath 'com.github.dcendents:android-maven-gradle-plugin:2.0'
1212
classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.8.0'
1313

0 commit comments

Comments
 (0)