-
Notifications
You must be signed in to change notification settings - Fork 36
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
367 changed files
with
12,765 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
/build |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,34 @@ | ||
apply plugin: 'com.android.application' | ||
|
||
android { | ||
compileSdkVersion 28 | ||
defaultConfig { | ||
applicationId "com.qiniu.droid.rtc.sample" | ||
minSdkVersion 18 | ||
targetSdkVersion 28 | ||
versionCode 1 | ||
versionName "1.0" | ||
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" | ||
} | ||
buildTypes { | ||
release { | ||
minifyEnabled false | ||
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' | ||
} | ||
} | ||
lintOptions { | ||
disable 'GoogleAppIndexingWarning' | ||
} | ||
} | ||
|
||
dependencies { | ||
implementation fileTree(include: ['*.jar'], dir: 'libs') | ||
implementation 'com.android.support:appcompat-v7:28.0.0' | ||
implementation 'com.android.support.constraint:constraint-layout:1.1.3' | ||
testImplementation 'junit:junit:4.12' | ||
androidTestImplementation 'com.android.support.test:runner:1.0.2' | ||
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2' | ||
|
||
// 二维码扫描 | ||
implementation 'cn.yipianfengye.android:zxing-library:2.2' | ||
} |
Binary file not shown.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
# Add project specific ProGuard rules here. | ||
# You can control the set of applied configuration files using the | ||
# proguardFiles setting in build.gradle. | ||
# | ||
# For more details, see | ||
# http://developer.android.com/guide/developing/tools/proguard.html | ||
|
||
# If your project uses WebView with JS, uncomment the following | ||
# and specify the fully qualified class name to the JavaScript interface | ||
# class: | ||
#-keepclassmembers class fqcn.of.javascript.interface.for.webview { | ||
# public *; | ||
#} | ||
|
||
# Uncomment this to preserve the line number information for | ||
# debugging stack traces. | ||
#-keepattributes SourceFile,LineNumberTable | ||
|
||
# If you keep the line number information, uncomment this to | ||
# hide the original source file name. | ||
#-renamesourcefileattribute SourceFile |
26 changes: 26 additions & 0 deletions
26
...-Android/app/src/androidTest/java/com/qiniu/droid/rtc/sample/ExampleInstrumentedTest.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
package com.qiniu.droid.rtc.sample; | ||
|
||
import android.content.Context; | ||
import android.support.test.InstrumentationRegistry; | ||
import android.support.test.runner.AndroidJUnit4; | ||
|
||
import org.junit.Test; | ||
import org.junit.runner.RunWith; | ||
|
||
import static org.junit.Assert.*; | ||
|
||
/** | ||
* Instrumented test, which will execute on an Android device. | ||
* | ||
* @see <a href="http://d.android.com/tools/testing">Testing documentation</a> | ||
*/ | ||
@RunWith(AndroidJUnit4.class) | ||
public class ExampleInstrumentedTest { | ||
@Test | ||
public void useAppContext() { | ||
// Context of the app under test. | ||
Context appContext = InstrumentationRegistry.getTargetContext(); | ||
|
||
assertEquals("com.qiniu.droid.rtc.sample1v1", appContext.getPackageName()); | ||
} | ||
} |
42 changes: 42 additions & 0 deletions
42
Group-Video/Group-Video-Android/app/src/main/AndroidManifest.xml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,42 @@ | ||
<?xml version="1.0" encoding="utf-8"?> | ||
<manifest xmlns:android="http://schemas.android.com/apk/res/android" | ||
package="com.qiniu.droid.rtc.sample"> | ||
|
||
<uses-permission android:name="android.permission.INTERNET" /> | ||
<uses-permission android:name="android.permission.RECORD_AUDIO" /> | ||
<uses-permission android:name="android.permission.CAMERA" /> | ||
<uses-permission android:name="android.permission.BLUETOOTH" /> | ||
<uses-permission android:name="android.permission.FLASHLIGHT" /> | ||
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" /> | ||
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> | ||
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> | ||
<uses-permission android:name="android.permission.READ_PHONE_STATE" /> | ||
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> | ||
<uses-permission android:name="android.permission.WAKE_LOCK" /> | ||
<uses-permission android:name="android.permission.VIBRATE" /> | ||
|
||
<application | ||
android:name="com.qiniu.droid.rtc.sample.RTCApplication" | ||
android:allowBackup="true" | ||
android:icon="@mipmap/ic_launcher" | ||
android:label="@string/app_name" | ||
android:roundIcon="@mipmap/ic_launcher_round" | ||
android:supportsRtl="true" | ||
android:theme="@style/AppTheme"> | ||
<activity android:name="com.qiniu.droid.rtc.sample.MainActivity" | ||
android:screenOrientation="portrait"> | ||
<intent-filter> | ||
<action android:name="android.intent.action.MAIN" /> | ||
|
||
<category android:name="android.intent.category.LAUNCHER" /> | ||
</intent-filter> | ||
</activity> | ||
<activity android:name="com.qiniu.droid.rtc.sample.RoomActivity" | ||
android:screenOrientation="portrait" /> | ||
<activity | ||
android:name="com.uuzuche.lib_zxing.activity.CaptureActivity" | ||
android:configChanges="orientation|keyboardHidden" | ||
android:screenOrientation="portrait" /> | ||
</application> | ||
|
||
</manifest> |
38 changes: 38 additions & 0 deletions
38
...deo/Group-Video-Android/app/src/main/java/com/qiniu/droid/rtc/sample/CustomVideoView.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,38 @@ | ||
package com.qiniu.droid.rtc.sample; | ||
|
||
import android.content.Context; | ||
import android.util.DisplayMetrics; | ||
import android.view.LayoutInflater; | ||
import android.view.View; | ||
import android.view.WindowManager; | ||
import android.widget.FrameLayout; | ||
import android.widget.TextView; | ||
|
||
import com.qiniu.droid.rtc.QNSurfaceView; | ||
|
||
public class CustomVideoView extends FrameLayout { | ||
private QNSurfaceView mVideoSurfaceView; | ||
private TextView mUserIdTextView; | ||
|
||
public CustomVideoView(Context context) { | ||
super(context); | ||
WindowManager wm = (WindowManager) context | ||
.getSystemService(Context.WINDOW_SERVICE); | ||
DisplayMetrics outMetrics = new DisplayMetrics(); | ||
wm.getDefaultDisplay().getMetrics(outMetrics); | ||
|
||
View view = LayoutInflater.from(context).inflate(R.layout.custom_video_view, this, true); | ||
FrameLayout layout = findViewById(R.id.frame_layout); | ||
layout.getLayoutParams().width = outMetrics.widthPixels / 2; | ||
mVideoSurfaceView = view.findViewById(R.id.video_view); | ||
mUserIdTextView = view.findViewById(R.id.user_id_text_view); | ||
} | ||
|
||
public QNSurfaceView getVideoSurfaceView() { | ||
return mVideoSurfaceView; | ||
} | ||
|
||
public void setUserId(String userId) { | ||
mUserIdTextView.setText(userId); | ||
} | ||
} |
74 changes: 74 additions & 0 deletions
74
...-Video/Group-Video-Android/app/src/main/java/com/qiniu/droid/rtc/sample/MainActivity.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,74 @@ | ||
package com.qiniu.droid.rtc.sample; | ||
|
||
import android.content.Intent; | ||
import android.os.Build; | ||
import android.support.v7.app.AppCompatActivity; | ||
import android.os.Bundle; | ||
import android.text.TextUtils; | ||
import android.view.View; | ||
import android.widget.EditText; | ||
import android.widget.Toast; | ||
|
||
import com.uuzuche.lib_zxing.activity.CaptureActivity; | ||
import com.uuzuche.lib_zxing.activity.CodeUtils; | ||
|
||
public class MainActivity extends AppCompatActivity { | ||
private static final int QRCODE_RESULT_REQUEST_CODE = 2; | ||
private EditText mRoomTokenEditText; | ||
|
||
@Override | ||
protected void onCreate(Bundle savedInstanceState) { | ||
super.onCreate(savedInstanceState); | ||
setContentView(R.layout.activity_main); | ||
|
||
mRoomTokenEditText = findViewById(R.id.room_token_edit_text); | ||
} | ||
|
||
public void joinRoom(View view) { | ||
// 在进入房间前,必须有相对应的权限,在 Android 6.0 后除了在 Manifest 文件中声明外还需要动态申请权限。 | ||
if (!isPermissionOK()) { | ||
Toast.makeText(this, "Some permissions is not approved !!!", Toast.LENGTH_SHORT).show(); | ||
return; | ||
} | ||
if (!TextUtils.isEmpty(mRoomTokenEditText.getText())) { | ||
Intent intent = new Intent(this, RoomActivity.class); | ||
intent.putExtra("roomToken", mRoomTokenEditText.getText().toString()); | ||
startActivity(intent); | ||
} | ||
} | ||
|
||
public void clickToScanQRCode(View view) { | ||
// 扫码也用到了相机权限 | ||
if (!isPermissionOK()) { | ||
Toast.makeText(this, "Some permissions is not approved !!!", Toast.LENGTH_SHORT).show(); | ||
return; | ||
} | ||
Intent intent = new Intent(this, CaptureActivity.class); | ||
startActivityForResult(intent, QRCODE_RESULT_REQUEST_CODE); | ||
} | ||
|
||
@Override | ||
protected void onActivityResult(int requestCode, int resultCode, Intent data) { | ||
super.onActivityResult(requestCode, resultCode, data); | ||
if (requestCode == 2) { | ||
// 处理扫描结果 | ||
if (null != data) { | ||
Bundle bundle = data.getExtras(); | ||
if (bundle == null) { | ||
return; | ||
} | ||
if (bundle.getInt(CodeUtils.RESULT_TYPE) == CodeUtils.RESULT_SUCCESS) { | ||
String result = bundle.getString(CodeUtils.RESULT_STRING); | ||
mRoomTokenEditText.setText(result); | ||
} else if (bundle.getInt(CodeUtils.RESULT_TYPE) == CodeUtils.RESULT_FAILED) { | ||
Toast.makeText(this, "解析二维码失败", Toast.LENGTH_LONG).show(); | ||
} | ||
} | ||
} | ||
} | ||
|
||
private boolean isPermissionOK() { | ||
PermissionChecker checker = new PermissionChecker(this); | ||
return Build.VERSION.SDK_INT < Build.VERSION_CODES.M || checker.checkPermission(); | ||
} | ||
} |
116 changes: 116 additions & 0 deletions
116
...o/Group-Video-Android/app/src/main/java/com/qiniu/droid/rtc/sample/PermissionChecker.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,116 @@ | ||
package com.qiniu.droid.rtc.sample; | ||
|
||
import android.Manifest; | ||
import android.annotation.TargetApi; | ||
import android.app.Activity; | ||
import android.app.AlertDialog; | ||
import android.content.DialogInterface; | ||
import android.content.pm.PackageManager; | ||
import android.os.Build; | ||
|
||
import java.util.ArrayList; | ||
import java.util.List; | ||
|
||
public class PermissionChecker { | ||
private static final int REQUEST_CODE_ASK_MULTIPLE_PERMISSIONS = 124; | ||
|
||
private Activity mActivity; | ||
|
||
public PermissionChecker(Activity activity) { | ||
mActivity = activity; | ||
} | ||
|
||
/** | ||
* Check that all given permissions have been granted by verifying that each entry in the | ||
* given array is of the value {@link PackageManager#PERMISSION_GRANTED}. | ||
* | ||
* @see Activity#onRequestPermissionsResult(int, String[], int[]) | ||
*/ | ||
private boolean verifyPermissions(int[] grantResults) { | ||
// At least one result must be checked. | ||
if (grantResults.length < 1){ | ||
return false; | ||
} | ||
|
||
// Verify that each required permission has been granted, otherwise return false. | ||
for (int result : grantResults) { | ||
if (result != PackageManager.PERMISSION_GRANTED) { | ||
return false; | ||
} | ||
} | ||
return true; | ||
} | ||
|
||
@TargetApi(Build.VERSION_CODES.M) | ||
public boolean checkPermission() { | ||
boolean ret = true; | ||
|
||
List<String> permissionsNeeded = new ArrayList<String>(); | ||
final List<String> permissionsList = new ArrayList<String>(); | ||
if (!addPermission(permissionsList, Manifest.permission.CAMERA)) { | ||
permissionsNeeded.add("CAMERA"); | ||
} | ||
if (!addPermission(permissionsList, Manifest.permission.RECORD_AUDIO)) { | ||
permissionsNeeded.add("MICROPHONE"); | ||
} | ||
if (!addPermission(permissionsList, Manifest.permission.WRITE_EXTERNAL_STORAGE)) { | ||
permissionsNeeded.add("Write external storage"); | ||
} | ||
|
||
if (permissionsNeeded.size() > 0) { | ||
// Need Rationale | ||
String message = "You need to grant access to " + permissionsNeeded.get(0); | ||
for (int i = 1; i < permissionsNeeded.size(); i++) { | ||
message = message + ", " + permissionsNeeded.get(i); | ||
} | ||
// Check for Rationale Option | ||
if (!mActivity.shouldShowRequestPermissionRationale(permissionsList.get(0))) { | ||
showMessageOKCancel(message, | ||
new DialogInterface.OnClickListener() { | ||
@Override | ||
public void onClick(DialogInterface dialog, int which) { | ||
mActivity.requestPermissions(permissionsList.toArray(new String[permissionsList.size()]), | ||
REQUEST_CODE_ASK_MULTIPLE_PERMISSIONS); | ||
} | ||
}); | ||
} | ||
else { | ||
mActivity.requestPermissions(permissionsList.toArray(new String[permissionsList.size()]), | ||
REQUEST_CODE_ASK_MULTIPLE_PERMISSIONS); | ||
} | ||
ret = false; | ||
} | ||
|
||
return ret; | ||
} | ||
|
||
private void showMessageOKCancel(String message, DialogInterface.OnClickListener okListener) { | ||
new AlertDialog.Builder(mActivity) | ||
.setMessage(message) | ||
.setPositiveButton("OK", okListener) | ||
.setNegativeButton("Cancel", null) | ||
.create() | ||
.show(); | ||
} | ||
|
||
@TargetApi(Build.VERSION_CODES.M) | ||
private boolean addPermission(List<String> permissionsList, String permission) { | ||
boolean ret = true; | ||
if (mActivity.checkSelfPermission(permission) != PackageManager.PERMISSION_GRANTED) { | ||
permissionsList.add(permission); | ||
ret = false; | ||
} | ||
return ret; | ||
} | ||
|
||
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { | ||
if (requestCode == REQUEST_CODE_ASK_MULTIPLE_PERMISSIONS) { | ||
if (verifyPermissions(grantResults)) { | ||
// all permissions granted | ||
} else { | ||
// some permissions denied | ||
//ToastUtils.s(mActivity, "some permissions denied"); | ||
} | ||
} | ||
} | ||
} |
30 changes: 30 additions & 0 deletions
30
...ideo/Group-Video-Android/app/src/main/java/com/qiniu/droid/rtc/sample/RTCApplication.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,30 @@ | ||
package com.qiniu.droid.rtc.sample; | ||
|
||
import android.app.Application; | ||
|
||
import com.qiniu.droid.rtc.QNLogLevel; | ||
import com.qiniu.droid.rtc.QNRTCEnv; | ||
import com.uuzuche.lib_zxing.activity.ZXingLibrary; | ||
|
||
public class RTCApplication extends Application { | ||
@Override | ||
public void onCreate() { | ||
super.onCreate(); | ||
|
||
// 设置 QNRTC Log 输出等级 | ||
QNRTCEnv.setLogLevel(QNLogLevel.INFO); | ||
|
||
// SDK 内部有 Log 保存接口,如有需要可开启后将 Log 文件保存到本地 | ||
// QNRTCEnv.setLogFileEnabled(true); | ||
// 设置保存文件的最大数量,达到该数量时会自动覆盖,默认值为 3。 | ||
// 如果存在 SDCard 且具有权限,将保存在 /sdcard/Android/data/包名/files/QNRTCLog 中, | ||
// 若没有,将保存在 mContext.getFilesDir().getAbsolutePath() + File.separator + "QNRTCLog" 中 | ||
// QNRTCEnv.setLogFileMaxCount(3); | ||
|
||
// 初始化 QNRTC 环境 | ||
QNRTCEnv.init(this); | ||
|
||
// 初始化使用的第三方二维码扫描库,与 QNRTC 无关,请忽略 | ||
ZXingLibrary.initDisplayOpinion(getApplicationContext()); | ||
} | ||
} |
Oops, something went wrong.