You need to enable JavaScript to run this app.
最新活动
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

视频捕获(MediaStore)&上传到FireBase - Android Kotlin

下面是一个使用Kotlin在Android中实现视频捕获并上传到Firebase的示例代码:

首先,确保在build.gradle文件中添加了Firebase和CameraX的依赖项:

dependencies {
    implementation 'com.google.firebase:firebase-storage:20.0.0'
    implementation 'androidx.camera:camera-camera2:1.1.0-alpha02'
    implementation 'androidx.camera:camera-lifecycle:1.1.0-alpha02'
    implementation 'androidx.camera:camera-view:1.0.0-alpha21'
}

然后,在AndroidManifest.xml文件中添加相机和存储权限

<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

接下来,创建一个名为CameraActivity的新Activity,并在布局文件中添加一个预览视图和一个按钮来启动视频捕获:

class CameraActivity : AppCompatActivity() {

    private lateinit var cameraView: PreviewView
    private lateinit var captureButton: Button

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_camera)

        cameraView = findViewById(R.id.cameraView)
        captureButton = findViewById(R.id.captureButton)

        captureButton.setOnClickListener {
            captureVideo()
        }
    }

    private fun captureVideo() {
        val videoFile = File(externalMediaDirs.first(), "video.mp4")

        val videoCapture = VideoCapture.Builder()
            .setTargetRotation(cameraView.display.rotation)
            .setTargetAspectRatio(AspectRatio.RATIO_16_9)
            .setTargetResolution(Size(1280, 720))
            .build()

        videoCapture.startRecording(videoFile, Executors.newSingleThreadExecutor(), object : VideoCapture.OnVideoSavedCallback {
            override fun onVideoSaved(file: File) {
                uploadVideo(file)
            }

            override fun onError(videoCaptureError: Int, message: String, cause: Throwable?) {
                Toast.makeText(this@CameraActivity, "视频捕获错误: $message", Toast.LENGTH_SHORT).show()
            }
        })
    }

    private fun uploadVideo(file: File) {
        val storageRef = FirebaseStorage.getInstance().reference
        val videoRef = storageRef.child("videos/${file.name}")

        val uploadTask = videoRef.putFile(file)

        uploadTask.addOnSuccessListener {
            Toast.makeText(this@CameraActivity, "视频上传成功", Toast.LENGTH_SHORT).show()
        }.addOnFailureListener {
            Toast.makeText(this@CameraActivity, "视频上传失败: ${it.message}", Toast.LENGTH_SHORT).show()
        }
    }
}

最后,创建一个名为activity_camera.xml的布局文件,其中包含一个PreviewView和一个Button:

<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <androidx.camera.view.PreviewView
        android:id="@+id/cameraView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_constraintBottom_toTopOf="@id/captureButton"
        app:layout_constraintTop_toTopOf="parent" />

    <Button
        android:id="@+id/captureButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="16dp"
        android:text="开始捕获视频"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent" />

</androidx.constraintlayout.widget.ConstraintLayout>

这个示例代码将在点击按钮时开始视频捕获,并将捕获的视频文件上传到Firebase存储中。请确保在Firebase控制台上设置了正确的存储规则,并在AndroidManifest.xml中添加了适当的权限

希望这可以帮助你解决问题!

本文内容通过AI工具匹配关键字智能整合而成,仅供参考,火山引擎不对内容的真实、准确或完整作任何形式的承诺。如有任何问题或意见,您可以通过联系service@volcengine.com进行反馈,火山引擎收到您的反馈后将及时答复和处理。
展开更多
面向开发者的云福利中心,ECS 60元/年,域名1元起,助力开发者快速在云上构建可靠应用

社区干货

MAD,现代安卓开发技术:Android 领域开发方式的重大变革|社区征文

Android Studio】演示 Android 官方 IDE 的重要特性3. 【Android App Bundle】简要普及 Google 推崇的 App 新格式4. 【**Kotlin**】解读 Android 首推的开发语言的优点6. 【**Jetpack**】讲述 Android 持... 可以捕获堆转储、强制执行垃圾回收以及跟踪内存分配以定位**内存方面的问题*** Battery:会监控 CPU、网络无线装置和 GPS 传感器的使用情况,并直观地显示其中每个组件消耗的电量,了解应用在**哪里耗用了不必要的...

借助 MAD 助力你的 Android 应用开发|社区征文

Android 自 08 年诞生之后的多年间 SDK 变化一直不大,开发方式较为固定。13 年起技术更新逐渐加速,特别是 17年之后, 随着 Kotlin 及 Jetpack 等新技术的出现 Android 开发方式发生了很大变化,去年推出的 Jetpack C... Fragment.viewModels( noinline ownerProducer: () -> ViewModelStoreOwner = { this }, noinline factoryProducer: (() -> Factory)? = null) = createViewModelLazy(VM::class, { ownerProducer().view...

如何打造一款优秀的跨平台APP暨跨平台APP开发经验总结|社区征文

`Android`:基于Eclipse或者Android Studio开发工具,使用`Java`或者`Kotlin`开发语言,来进行原生态的`Android`应用的开发。`Hybrid App` 采用H5技术实现,技术选型就比较广泛了。目前主流的移动端跨平台技术方案... 如视频播放或图像编辑。- `Flutter`: 由 `Google` 于2018年开源的构建用户界面(UI)工具包,其基于Dart编译器和Flutter拥有基于`DART`编写的“`UI-as-a-code`”小部件,它的性能比任何其他跨平台移动开发框架都要好...

特惠活动

热门爆款云服务器

100%性能独享,更高内存性能更佳,学习测试、web前端、企业应用首选,每日花费低至0.55元
60.00/1212.00/年
立即购买

域名注册服务

cn/top/com等热门域名,首年低至1元,邮箱建站必选
1.00/首年起32.00/首年起
立即购买

DCDN国内流量包100G

同时抵扣CDN与DCDN两种流量消耗,加速分发更实惠
2.00/20.00/年
立即购买

视频捕获(MediaStore)&上传到FireBase - Android Kotlin-优选内容

MAD,现代安卓开发技术:Android 领域开发方式的重大变革|社区征文
Android Studio】演示 Android 官方 IDE 的重要特性3. 【Android App Bundle】简要普及 Google 推崇的 App 新格式4. 【**Kotlin**】解读 Android 首推的开发语言的优点6. 【**Jetpack**】讲述 Android 持... 可以捕获堆转储、强制执行垃圾回收以及跟踪内存分配以定位**内存方面的问题*** Battery:会监控 CPU、网络无线装置和 GPS 传感器的使用情况,并直观地显示其中每个组件消耗的电量,了解应用在**哪里耗用了不必要的...
借助 MAD 助力你的 Android 应用开发|社区征文
Android 自 08 年诞生之后的多年间 SDK 变化一直不大,开发方式较为固定。13 年起技术更新逐渐加速,特别是 17年之后, 随着 Kotlin 及 Jetpack 等新技术的出现 Android 开发方式发生了很大变化,去年推出的 Jetpack C... Fragment.viewModels( noinline ownerProducer: () -> ViewModelStoreOwner = { this }, noinline factoryProducer: (() -> Factory)? = null) = createViewModelLazy(VM::class, { ownerProducer().view...
如何打造一款优秀的跨平台APP暨跨平台APP开发经验总结|社区征文
`Android`:基于Eclipse或者Android Studio开发工具,使用`Java`或者`Kotlin`开发语言,来进行原生态的`Android`应用的开发。`Hybrid App` 采用H5技术实现,技术选型就比较广泛了。目前主流的移动端跨平台技术方案... 如视频播放或图像编辑。- `Flutter`: 由 `Google` 于2018年开源的构建用户界面(UI)工具包,其基于Dart编译器和Flutter拥有基于`DART`编写的“`UI-as-a-code`”小部件,它的性能比任何其他跨平台移动开发框架都要好...

视频捕获(MediaStore)&上传到FireBase - Android Kotlin-相关内容

特惠活动

热门爆款云服务器

100%性能独享,更高内存性能更佳,学习测试、web前端、企业应用首选,每日花费低至0.55元
60.00/1212.00/年
立即购买

域名注册服务

cn/top/com等热门域名,首年低至1元,邮箱建站必选
1.00/首年起32.00/首年起
立即购买

DCDN国内流量包100G

同时抵扣CDN与DCDN两种流量消耗,加速分发更实惠
2.00/20.00/年
立即购买

产品体验

体验中心

云服务器特惠

云服务器
云服务器ECS新人特惠
立即抢购

白皮书

一图详解大模型
浓缩大模型架构,厘清生产和应用链路关系
立即获取

最新活动

爆款1核2G共享型服务器

首年60元,每月仅需5元,限量秒杀
立即抢购

火山引擎增长体验专区

丰富能力激励企业快速增长
查看详情

数据智能VeDI

易用的高性能大数据产品家族
了解详情

一键开启云上增长新空间

立即咨询