AndroidRecording
Android Recording library offers convenient tools for audio/video recording and playback
Install / Use
/learn @steelkiwi/AndroidRecordingREADME
Android Recording Library
Android Recording library offers convenient tools for audio/video recording and playback.
For audio it uses:
- AudioRecord to capture and save audio signal from microphone
- MediaPlayer with MediaController to play recorded audio
- custom Visualizer (like bar chart) to represent audio signal on screen while recording and during playback
For video it uses:
- Camera and MediaRecorder to record a video of specified resolution
- MediaPlayer with MediaController to play recorded video
- custom SurfaceView with adjustable size to properly display Camera preview and recorded video (in portrait and landscape modes)
Record audio: how to use
-
Setup VisualizerView
<com.skd.androidrecording.visualizer.VisualizerView android:id="@+id/visualizerView" android:layout_width="fill_parent" android:layout_height="100dp" > </com.skd.androidrecording.visualizer.VisualizerView>visualizerView = (VisualizerView) findViewById(R.id.visualizerView); setupVisualizer(); ... private void setupVisualizer() { Paint paint = new Paint(); paint.setStrokeWidth(5f); //set bar width paint.setAntiAlias(true); paint.setColor(Color.argb(200, 227, 69, 53)); //set bar color BarGraphRenderer barGraphRendererBottom = new BarGraphRenderer(2, paint, false); visualizerView.addRenderer(barGraphRendererBottom); }
2. Start recording thread
```java
private void startRecording() {
recordingThread = new AudioRecordingThread(fileName, new AudioRecordingHandler() { //pass file name where to store the recorded audio
@Override
public void onFftDataCapture(final byte[] bytes) {
runOnUiThread(new Runnable() {
public void run() {
if (visualizerView != null) {
visualizerView.updateVisualizerFFT(bytes); //update VisualizerView with new audio portion
}
}
});
}
@Override
public void onRecordSuccess() {}
@Override
public void onRecordingError() {}
@Override
public void onRecordSaveError() {}
});
recordingThread.start();
}
```
3. When done, stop recording
```java
private void stopRecording() {
if (recordingThread != null) {
recordingThread.stopRecording();
recordingThread = null;
}
}
```
Play audio: how to use
------------------------
1. Setup VisualizerView
2. Setup AudioPlaybackManager. It will attach MediaPlayer to a VisualizerView
```java
playbackManager = new AudioPlaybackManager(this, visualizerView, playbackHandler);
playbackManager.setupPlayback(fileName); //pass file name of the recorded audio
```
3. Use onscreen MediaController to play/pause/stop/rewind audio
Record video: how to use
------------------------
1. Setup custom SurfaceView (AdaptiveSurfaceView)
```xml
<com.skd.androidrecording.video.AdaptiveSurfaceView
android:id="@+id/videoView"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
```
2. Setup RecordingManager
```java
videoView = (AdaptiveSurfaceView) findViewById(R.id.videoView);
recordingManager = new VideoRecordingManager(videoView, recordingHandler); //pass reference to custom SurfaceView
```
3. Choose desired video resolution and pass it to RecordingManager, it will adjust size of AdaptiveSurfaceView to properly display Camera output
```java
recordingManager.setPreviewSize(videoSize);
```
4. To start recording use
```java
recordingManager.startRecording(fileName, videoSize)
```
5. To stop recording use
```java
recordingManager.stopRecording()
```
Play video: how to use
------------------------
1. Setup custom SurfaceView (AdaptiveSurfaceView)
2. Setup VideoPlaybackManager. It will attach MediaPlayer to a VisualizerView
```java
playbackManager = new VideoPlaybackManager(this, videoView, playbackHandler);
playbackManager.setupPlayback(fileName); //pass file name of the recorded video
```
3. Use onscreen MediaController to play/pause/stop/rewind video
====================================
For more details, please, see the demo project.
Related Skills
qqbot-channel
343.3kQQ 频道管理技能。查询频道列表、子频道、成员、发帖、公告、日程等操作。使用 qqbot_channel_api 工具代理 QQ 开放平台 HTTP 接口,自动处理 Token 鉴权。当用户需要查看频道、管理子频道、查询成员、发布帖子/公告/日程时使用。
docs-writer
99.7k`docs-writer` skill instructions As an expert technical writer and editor for the Gemini CLI project, you produce accurate, clear, and consistent documentation. When asked to write, edit, or revie
model-usage
343.3kUse CodexBar CLI local cost usage to summarize per-model usage for Codex or Claude, including the current (most recent) model or a full model breakdown. Trigger when asked for model-level usage/cost data from codexbar, or when you need a scriptable per-model summary from codexbar cost JSON.
project-overview
FlightPHP Skeleton Project Instructions This document provides guidelines and best practices for structuring and developing a project using the FlightPHP framework. Instructions for AI Coding A
