我已经完成了这个简单的程序。它所做的只是同时记录和回放缓冲区。如果采样率为 44100 hz,一切正常,但如果我将采样率更改为 16000 或 8000,它根本不会产生任何声音,或者可能是一些听不见的白噪声。为什么会发生这种情况?
如何以不同的采样率进行录制?
以下代码我试过:
import UIKit
import AVFoundation
class ViewController: UIViewController {
var engine = AVAudioEngine()
let player = AVAudioPlayerNode()
let audioSession = AVAudioSession.sharedInstance()
let newSrc:UnsafeMutablePointer<Float>! = nil
override func viewDidLoad() {
super.viewDidLoad()
let audioSession = AVAudioSession.sharedInstance()
print(audioSession.sampleRate) // here it prints 44100 hz. because it still using the internal mic.
do {
try audioSession.setCategory(AVAudioSessionCategoryPlayAndRecord, with: .allowBluetooth)
try audioSession.setMode(AVAudioSessionModeDefault)
try audioSession.setActive(true)
} catch {
}
print(audioSession.sampleRate) // here it will print 16000 hz if my bluetooth …Run Code Online (Sandbox Code Playgroud) 我可以使用约束布局中的水平和垂直偏差基于屏幕尺寸设置UI元素的位置。
但是,UI元素的宽度和高度不会根据屏幕大小而改变,因此看起来仍然不完美。
那我怎么能做到这一点呢?
下面是我的源代码:
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.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"
tools:context="com.satizh.android.constraintlayouttest.MainActivity">
<Button
android:id="@+id/button"
android:layout_width="125dp"
android:layout_height="47dp"
android:layout_marginBottom="0dp"
android:layout_marginLeft="0dp"
android:layout_marginRight="0dp"
android:layout_marginTop="0dp"
android:layout_weight="68"
android:text="5%V30%H"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintHorizontal_bias="0.3"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.050000012" />
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button"
android:layout_marginTop="0dp"
app:layout_constraintTop_toBottomOf="@+id/button"
android:layout_marginRight="0dp"
app:layout_constraintRight_toRightOf="parent"
android:layout_marginLeft="0dp"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintHorizontal_bias="0.915"
app:layout_constraintBottom_toBottomOf="parent"
android:layout_marginBottom="0dp"
app:layout_constraintVertical_bias="0.138" />
<android.support.constraint.Guideline
android:id="@+id/guideline"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
app:layout_constraintGuide_percent="0.14" />
<android.support.constraint.Guideline
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/guideline2"
android:orientation="horizontal"
app:layout_constraintGuide_percent="0.05" />
<android.support.constraint.Guideline
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/guideline3"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.2" />
<android.support.constraint.Guideline
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/guideline4"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.53" />
</android.support.constraint.ConstraintLayout>
Run Code Online (Sandbox Code Playgroud)
我已经创建了一些指导原则(以百分比为单位),以便我们可以猜测旋转设备时基于屏幕的UI按钮的实际外观。这是更好理解的gif。
android android-layout android-view android-constraintlayout
我可以通过使用,打印出主视图约束常数,
for v in view.constraints {
print(v.constant)
}
Run Code Online (Sandbox Code Playgroud)
但它也不会遍历子视图来打印它们的约束.所以,我...
for subview in view.subviews {
for v in subview.constraints {
print(v.constant)
}
}
Run Code Online (Sandbox Code Playgroud)
现在的问题是,如果子视图本身就是一个视图?.在这种情况下,如何打印出子视图 - >视图约束常量.可能是子视图中的视图可能有自己的子视图等等......
要解决这个问题,我可以简单地为所有视图创建出口,然后我必须逐个迭代它们以获得它的约束常量.
但我觉得必须有一个简单的方法来打印出所有约束常量(在特定视图控制器下的故事板中创建的所有约束),以编程方式完成而不创建出口.
简而言之 :
如何打印视图控制器中的所有storybaord约束常量请注意:视图控制器可能有多个视图和子视图,子视图可能有自己的子视图.所以我们需要创建一个算法,如果使用的话,它可以有效地在任何类型的视图控制器中打印出约束常量.