HBRecorder
1.0.0
创建和维护这样的库需要大量的时间和精力。
如果您想表示感谢,则可以在下面这样做:
轻巧的屏幕和音频录制Android库
需要API级别21>
在此处下载演示应用程序
在root build.gradle中添加以下内容,在存储库的结尾处:
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
在您的应用程序级别build.gradle中实现库:
dependencies {
implementation 'com.github.HBiSoft:HBRecorder:3.0.7'
}
Activity
中,首先实施HBRecorder
,如下所示: public class MainActivity extends AppCompatActivity implements HBRecorderListener {
Alt+Enter
以实现以下方法: @ Override
public void HBRecorderOnStart () {
//When the recording starts
}
@ Override
public void HBRecorderOnComplete () {
//After file was created
}
@ Override
public void HBRecorderOnError ( int errorCode ) {
//When an error occurs
}
@ Override
public void HBRecorderOnPause () {
//When recording was paused
}
@ Override
public void HBRecorderOnResume () {
//When recording was resumed
}
HBRecorder
如下所示: public class MainActivity extends AppCompatActivity implements HBRecorderListener {
HBRecorder hbRecorder ;
@ Override
protected void onCreate ( Bundle savedInstanceState ) {
super . onCreate ( savedInstanceState );
setContentView ( R . layout . activity_main );
//Init HBRecorder
hbRecorder = new HBRecorder ( this , this );
}
< uses - permission android : name = "android.permission.WRITE_EXTERNAL_STORAGE" />
< uses - permission android : name = "android.permission.WRITE_INTERNAL_STORAGE" />
< uses - permission android : name = "android.permission.RECORD_AUDIO" />
< uses - permission android : name = "android.permission.FOREGROUND_SERVICE" />
<!-- For SDK 34 -->
< uses - permission android : name = "android.permission.FOREGROUND_SERVICE_MEDIA_PROJECTION" />
就是这样, HBRecorder
现在就可以使用了。
private void startRecordingScreen () {
MediaProjectionManager mediaProjectionManager = ( MediaProjectionManager ) getSystemService ( Context . MEDIA_PROJECTION_SERVICE );
Intent permissionIntent = mediaProjectionManager != null ? mediaProjectionManager . createScreenCaptureIntent () : null ;
startActivityForResult ( permissionIntent , SCREEN_RECORD_REQUEST_CODE );
}
@ Override
protected void onActivityResult ( int requestCode , int resultCode , Intent data ) {
super . onActivityResult ( requestCode , resultCode , data );
if ( requestCode == SCREEN_RECORD_REQUEST_CODE ) {
if ( resultCode == RESULT_OK ) {
//Start screen recording
hbRecorder . startScreenRecording ( data , resultCode );
}
}
}
// Set the output path as a String
// Only use this on devices running Android 9 and lower or you have to add android:requestLegacyExternalStorage="true" in your manifest
// Defaults to - Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MOVIES)
hbrecorder . setOutputPath ( String );
// Set output Uri
// Only use this on devices running Android 10>
// When setting a Uri ensure you pass the same name to HBRecorder as what you set in ContentValues (DISPLAY_NAME and TITLE)
hbRecorder . setOutputUri ( Uri );
// Set file name as String
// Defaults to - quality + time stamp. For example HD-2019-08-14-10-09-58.mp4
hbrecorder . setFileName ( String );
// Set audio bitrate as int
// Defaults to - 128000
hbrecorder . setAudioBitrate ( int );
// Set audio sample rate as int
// Defaults to - 44100
hbrecorder . setAudioSamplingRate ( int );
// Enable/Disable audio
// Defaults to true
hbrecorder . isAudioEnabled ( boolean );
// Enable/Disable HD Video
// Defaults to true
hbrecorder . recordHDVideo ( boolean );
// Get file path as String
hbrecorder . getFilePath ();
// Get file name as String
hbrecorder . getFileName ();
// Start recording screen by passing it as Intent inside onActivityResult
hbrecorder . startScreenRecording ( Intent );
// Pause screen recording (only available for devices running 24>)
hbrecorder . pauseScreenRecording ();
// Resume screen recording
hbreccorder . resumeScreenRecording ();
// Stop screen recording
hbrecorder . stopScreenRecording ();
// Check if recording is in progress
hbrecorder . isBusyRecording ();
// Set notification icon by passing, for example R.drawable.myicon
// Defaults to R.drawable.icon
hbrecorder . setNotificationSmallIcon ( int );
// Set notification icon using byte array
hbrecorder . setNotificationSmallIcon ( byte []);
// Set notification icon using vector drawable
hbRecorder . setNotificationSmallIconVector ( vector );
// Set notification title
// Defaults to "Recording your screen"
hbrecorder . setNotificationTitle ( String );
// Set notification description
// Defaults to "Drag down to stop the recording"
hbrecorder . setNotificationDescription ( String );
// Set notification stop button text
// Defaults to "STOP RECORDING"
hbrecorder . setNotificationButtonText ( String );
// Set output orientation (in degrees)
hbrecorder . setOrientationHint ( int );
// Set max output file size
hbrecorder . setMaxFileSize ( long );
// Set max time (in seconds)
hbRecorder . setMaxDuration ( int );
当您要启用自定义设置时,必须首先致电:
hbRecorder . enableCustomSettings ();
然后,您可以设置以下内容:
//MUST BE ONE OF THE FOLLOWING - https://developer.android.com/reference/android/media/MediaRecorder.AudioSource.html
hbRecorder . setAudioSource ( String );
//MUST BE ONE OF THE FOLLOWING - https://developer.android.com/reference/android/media/MediaRecorder.VideoEncoder.html
hbRecorder . setVideoEncoder ( String );
//If nothing is provided, it will select the highest value supported by your device
hbRecorder . setScreenDimensions ( HeightInPx , WidthInPx );
//Frame rate is device dependent
//You can use Camcoderprofile to determine the frame rate
hbRecorder . setVideoFrameRate ( int );
//The bitrate is also dependent on the device and the frame rate that is set
hbRecorder . setVideoBitrate ( int );
//MUST BE ONE OF THE FOLLOWING - https://developer.android.com/reference/android/media/MediaRecorder.OutputFormat.html
hbRecorder . setOutputFormat ( String );
重要的是要注意,限制取决于设备。最好将视频编码器设置为“默认”,然后让MediaRecorder
选择最佳编码器。
在演示应用程序中,您可以选择测试不同的视频编码器,比特率,帧速率和输出格式。如果您的设备不支持您选择的任何参数HBRecorderOnError
则将被调用。