当前位置: 首页 > news >正文

如何做自己公司的网站网站建设优化怎么做

如何做自己公司的网站,网站建设优化怎么做,望城区城市建设投资集团门户网站,素描网站怎么做最近在做UAC的项目#xff0c;大概就是接收内核UAC的事件#xff0c;也就是声音相关事件。然后就是pcm_read和AudioTrackr-write之间互传。感觉略微有点奇怪#xff0c;所以简单总结一下。 1 UAC的简要流程 open_netlink_socket 打开内核窗口#xff0c;类似于ioctl。…最近在做UAC的项目大概就是接收内核UAC的事件也就是声音相关事件。然后就是pcm_read和AudioTrackr-write之间互传。感觉略微有点奇怪所以简单总结一下。 1 UAC的简要流程 open_netlink_socket 打开内核窗口类似于ioctl。 recvfrom 接收数据。 UAC_CAP_START 处理开始播放事件。     host_to_device         tracker_data_thread 播放线程。             pcm_read-(AudioTrackr-write)         pcm_open         pcm_read         pcm_close          UAC_CAP_STOP 处理停止播放事件。      UAC_PLAY_START 处理开始录音事件。     device_to_host         recorder_data_thread             (AudioRecord-read)-pcm_write         pcm_open         pcm_write         pcm_close      UAC_PLAY_STOP 处理停止录音事件。 2 安卓音频系统 https://source.android.com/docs/core/audio?hlzh-cn 关于UAC的内容居然也有说 https://source.android.com/docs/core/audio/usb?hlzh-cn 不过下面这两个图我觉得直观一丢丢。 下面这个都包浆了。。。 大致就是几层 1 Java App层这一层封装最完善但是只有最常规的操作给开发app的帅哥做傻瓜式操作的。使用android.media.MediaPlayer。 2 Framework层这一层可以使用AudioTracker和AudioRecorder这一层接口比较底层一点提供的功能比较多。可以实现实时处理和一些特效。Java和C都可以用。下面还有个AudioFlinger是用来做混音的。也是上下层的分隔。所以绕过Framework层直接用HAL的接口可能就有问题。 3 HAL接口。有HIDL和AIDL的这一层理论上可以用但是貌似比较少起码我们公司的大神都不在这层搞事。 4 ALSA接口这一层是标准Linux的花样也是非常多。 3 App接口 没啥好说的这部分我也不是太熟悉直接怼media.MediaPlayer即可。代码说明一切吧。 package com.example.audioplayer;import android.media.MediaPlayer; import android.os.Bundle; import android.view.View; import android.widget.Button; import androidx.appcompat.app.AppCompatActivity;public class MainActivity extends AppCompatActivity {private MediaPlayer mediaPlayer;Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Button playButton findViewById(R.id.play_button);Button stopButton findViewById(R.id.stop_button);// 播放本地音频文件mediaPlayer MediaPlayer.create(this, R.raw.example_audio);// 如果你想播放网络音频流可以使用下面的代码// mediaPlayer new MediaPlayer();// try {// mediaPlayer.setDataSource(http://your-audio-url.com/audio.mp3);// mediaPlayer.prepare(); // 同步准备可能会阻塞主线程建议使用异步准备// } catch (IOException e) {// e.printStackTrace();// }playButton.setOnClickListener(new View.OnClickListener() {Overridepublic void onClick(View v) {if (mediaPlayer ! null !mediaPlayer.isPlaying()) {mediaPlayer.start();}}});stopButton.setOnClickListener(new View.OnClickListener() {Overridepublic void onClick(View v) {if (mediaPlayer ! null mediaPlayer.isPlaying()) {mediaPlayer.stop();// 重新准备MediaPlayermediaPlayer.prepareAsync();}}});}Overrideprotected void onDestroy() {super.onDestroy();if (mediaPlayer ! null) {mediaPlayer.release();mediaPlayer null;}} }4 AudioTracker和AudioRecorder 我这次项目用的就是这两个其实还是挺简单看个例子就够了。。。 #include android/media/AudioTrack.h// 假设audioBuffer是一个已经加载好的音频数据的short数组 short audioBuffer[]; // 音频数据填充到这个数组中 int bufferSize audioTrack-frameCount() * audioTrack-channelCount(); // 计算缓冲区大小// 创建一个AudioTrack实例 auto audioTrack new android::media::AudioTrack(android::media::AudioTrack::STREAM_MUSIC, // 音频流类型44100, // 采样率44.1kHzandroid::media::AudioTrack::CHANNEL_OUT_STEREO, // 立体声输出android::media::AudioTrack::TRANSFER_MODE_STATIC, // 静态模式bufferSize, // 缓冲区大小android::media::AudioTrack::MODE_STATIC // 静态播放模式 );// 开始播放音频 audioTrack-start();// 写入数据到AudioTrack缓冲区 audioTrack-write(audioBuffer, bufferSize);// 播放完毕暂停并释放资源 audioTrack-stop(); delete audioTrack; 5 HAL 这部分位于vendor上面的是位于system所以还是区别很大。如果要在vendor搞事情还是要用这个部分。 定义是在这个地方https://android.googlesource.com/platform/hardware/interfaces//refs/heads/master/audio/ 但是比较疑惑的一点是单位有大神说直接调用Hal会碰坏系统。。。存疑中。。。 用的话直接用hardware/audio.h就可以。 #include jni.h #include string #include android/log.h #include hardware/hardware.h #include hardware/audio.h#define LOG_TAG NativeAudio #define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG, LOG_TAG, __VA_ARGS__)extern C JNIEXPORT void JNICALL Java_com_example_audioplayer_MainActivity_nativeInitAudio(JNIEnv *env, jobject thiz) {LOGD(Initializing Audio HAL);hw_module_t *module nullptr;hw_device_t *device nullptr;// Load the audio hardware moduleif (hw_get_module(AUDIO_HARDWARE_MODULE_ID, (const hw_module_t **)module) 0) {LOGD(Audio module loaded);// Open the audio hardware deviceif (module-methods-open(module, AUDIO_HARDWARE_INTERFACE, device) 0) {LOGD(Audio device opened);audio_hw_device_t *audioDevice (audio_hw_device_t *)device;if (audioDevice audioDevice-init_check(audioDevice) 0) {LOGD(Audio device initialized);// Set up and start playback using audio_stream_outaudio_stream_out_t *streamOut nullptr;audioDevice-open_output_stream(audioDevice, 0, AUDIO_DEVICE_OUT_SPEAKER,AUDIO_OUTPUT_FLAG_NONE, nullptr, streamOut, nullptr);if (streamOut) {LOGD(Audio stream out opened);// Simplified example to play a buffer (should use actual audio data)size_t bufferSize streamOut-common.get_buffer_size(streamOut-common);uint8_t *buffer new uint8_t[bufferSize];memset(buffer, 0, bufferSize); // Fill buffer with silence or actual audio datastreamOut-write(streamOut, buffer, bufferSize);delete[] buffer;audioDevice-close_output_stream(audioDevice, streamOut);} else {LOGD(Failed to open audio stream out);}} else {LOGD(Audio device initialization failed);}device-close(device);} else {LOGD(Failed to open audio device);}} else {LOGD(Failed to load audio module);} }6 ALSA 这个部分有点略大看看下次写吧。。。还有一个OMX以后有心情再写吧。。。 最后回到一开始说的UAC应该是新生成了音频的节点然后可以从这个节点读取音频数据但是最后要将声音从Android的接口放出去所以那么搞。之前调试的时候在UAC的模式下好像也确实是生成了两张声卡。这部分感觉内容也挺多了下次再总结。 参考 https://source.android.com/docs/core/audio?hlzh-cn Android系统Audio框架介绍_android audio-CSDN博客 Android系统Audio框架介绍_android audio-CSDN博客
http://www.tj-hxxt.cn/news/130713.html

相关文章:

  • 做国外零售的话是在什么网站开店怎样给网站做外链
  • 网页制作与网站建设期末考试注册网站会员会泄露信息吗
  • 烟台网站建设联系电话专业低价建设微网站微商城怎么样
  • 云南建设厅网站职称评定免费建设自己的文学网站
  • 建设地情网站的作用一个网站开发语言
  • 网站规划与建设 pptwordpress 进入
  • 网站设计营销门户网站的推广
  • 个人博客网站html模板wordpress 问答 api
  • 广州网站建设(信科网络)阳区城市规划建设局网站
  • 网站建设与维护课程标准济南公众平台网站建设
  • 网站建设与管理实训报告wordpress的链接功能
  • asp怎么做网站重庆seo关键词排名
  • 网站放到服务器wordpress dux主题首页
  • 贵阳市网站开发建设局网站更改法人所需材料
  • asp.net 如何设置网站首页北京市在建工程项目查询
  • 网站系统制作教程如何用手机开发游戏
  • .net网站开发的例子h5可以做网站吗
  • 门户网站推荐国内网站建设哪家好
  • 如何用服务器搭建网站如何在网上做网站推广
  • 莱州市建设局网站wordpress和dedecms哪个好
  • 网站建设续费是那些充值中心网站怎么做
  • 网站建设往年的高考题推广平台有哪几个
  • 建网站的公司服务中国flash网站模板中心
  • 沈阳网站制作的公司哪家好免费推广的软件
  • 营商环境建设监督局网站安徽公路建设行业协会网站是哪个
  • 沈阳专门代做网站的设计ui
  • 东莞企业网站设计排名软件开发工程师证书怎么考
  • seo网站编辑免费公司网站建站
  • 网站建设与维护期末试卷百度网站排名优化
  • 十大网站央企 网站建设 公司