{"id":21379116,"url":"https://github.com/pikachu0621/visualization","last_synced_at":"2025-07-13T11:32:29.924Z","repository":{"id":52060539,"uuid":"470908029","full_name":"pikachu0621/visualization","owner":"pikachu0621","description":"音频可视化","archived":false,"fork":false,"pushed_at":"2023-11-05T17:17:26.000Z","size":70473,"stargazers_count":9,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2023-11-05T18:25:27.869Z","etag":null,"topics":["android","audio","java","kotlin","visualization"],"latest_commit_sha":null,"homepage":"","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pikachu0621.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2022-03-17T08:29:51.000Z","updated_at":"2023-11-01T06:48:19.000Z","dependencies_parsed_at":"2022-08-03T07:30:52.071Z","dependency_job_id":"591725ad-a9b8-4f78-b5c9-3c2d5d740257","html_url":"https://github.com/pikachu0621/visualization","commit_stats":null,"previous_names":[],"tags_count":1,"template":null,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pikachu0621%2Fvisualization","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pikachu0621%2Fvisualization/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pikachu0621%2Fvisualization/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pikachu0621%2Fvisualization/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pikachu0621","download_url":"https://codeload.github.com/pikachu0621/visualization/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225878118,"owners_count":17538401,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["android","audio","java","kotlin","visualization"],"created_at":"2024-11-22T10:17:20.973Z","updated_at":"2024-11-22T10:17:22.323Z","avatar_url":"https://github.com/pikachu0621.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"音频可视化\n===\n提供比较流畅的音频可视化组件，同时可以自定义频谱图\n\n\n环形样式 AnnularAdapter\n----\n![](assets/au.png)\n\n\n直方样式 StraightSideAdapter\n----\n![](assets/se.png)\n\n演示\n---\n[安装APP](assets/release/app-release.apk)\n\u003cbr\u003e\n\n\n\n\n用法\n---\n\u003e1. 权限\n```xml\n\u003cuses-permission android:name=\"android.permission.RECORD_AUDIO\" /\u003e\n\u003cuses-permission android:name=\"android.permission.MODIFY_AUDIO_SETTINGS\" /\u003e\n```\n\u003cbr\u003e\n\n\n\u003e2. 布局引用\n```xml\n    \u003ccom.pikachu.visualization.audio.VisualizationAudioView\n        android:id=\"@+id/audio\"\n        android:layout_width=\"match_parent\"\n        android:layout_height=\"match_parent\" /\u003e\n```\n\u003cbr\u003e\n\n\u003e3. 控制  当然还要播放一首音乐\n```kotlin\n// 设置适配器 , 绑定生命周期  (目前只画了 AnnularAdapter, StraightSideAdapter 两个样式)\naudio.setAdapter(VisualizationAudioAdapter(), this)\n// 启动  必须有权限(动态申请)\naudio.start()\n// 停止\naudio.stop()\n```\n\u003cbr\u003e\n\n\n\n\n\n\n\n\n\n\n自定义\n---\n\u003e1. 继承 VisualizationAudioAdapter 适配器， 实现以下方法\n```kotlin\n\n/**\n *\n * 测量View 数据\n *\n * @return 需要多少条数据源\n */\nabstract fun onAudioViewMeasure(measureWidth: Int, measureHeight: Int, view: VisualizationAudioView): Int\n\n/**\n * 画布\n *\n * @param canvas    画布\n * @param transform 处理后的FFT数据\n */\nabstract fun drawView(canvas: Canvas, transform: FloatArray, view: VisualizationAudioView)\n\n```\n\u003cbr\u003e\n\n\n\u003e2. 一些属性设置\n```kotlin\n /**\n * 设置适配器 并绑定 lifecycle\n */\nfun setAdapter(adapter: VisualizationAudioAdapter, context: Context? = null)\n\n\n/**\n * 开始\n */\nfun start()\n\n/**\n * 停止\n */\nfun stop()\n\n\n/**\n * 设置配置\n */\nfun setVisualizationAudioConfig(config: VisualizationAudioViewHelper.VisualizationAudioConfig)\n\n/**\n * 获取配置\n */\nfun getVisualizationAudioConfig(): VisualizationAudioViewHelper.VisualizationAudioConfig\n\n\n/**\n * 绑定生命周期\n */\nfun bindLifecycle(lifecycle: Lifecycle)\n\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpikachu0621%2Fvisualization","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpikachu0621%2Fvisualization","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpikachu0621%2Fvisualization/lists"}