カメラアプリを呼んでビデオを撮る
- AndroidManifest.xml
 
<manifest ... >
    <uses-feature android:name="android.hardware.camera"
                  android:required="true" />
    ...
</manifest>カメラアプリを呼んでビデオを撮る
<manifest ... >
    <uses-feature android:name="android.hardware.camera"
                  android:required="true" />
    ...
</manifest>| func print(_ items: Any..., separator: String = " ", terminator: String = "\n") { | |
| #if DEBUG | |
| let formatter = DateFormatter() | |
| formatter.dateFormat = "yyyy-MM-dd HH:mm:ss.SSS" | |
| // 文頭に日時を付与する | |
| Swift.print(formatter.string(from: Date()), terminator: " ") | |
| Swift.print(items, separator: separator, terminator: terminator) | |
| #else | |
| // なにもしない | |
| #endif | 
| /** | |
| * Program that implements classes for different kinds of dwellings. | |
| * Shows how to: | |
| * Create class hierarchy, variables and functions with inheritance, | |
| * abstract class, overriding, and private vs. public variables. | |
| */ | |
| import kotlin.math.PI | |
| import kotlin.math.sqrt | |
| fun main() { | 
| Android Studio 4.0.1にて | |
| classpath 'com.android.tools.build:gradle:3.5.3' → | |
| classpath 'com.android.tools.build:gradle:4.0.1' | |
| にupdateした。 | |
| Build APKすると | |
| > Task :app:multiDexListDevelopDebug FAILED | |
| AGPBI: {"kind":"error","text":"Type androidx.transition.R is defined multiple times: /Users/nijimac088/goo-memo-android/app/build/intermediates/transforms/RealmTransformer/develop/debug/1.jar:androidx/transition/R.class, /Users/nijimac088/goo-memo-android/app/build/intermediates/transforms/RealmTransformer/develop/debug/0/androidx/transition/R.class","sources":[{"file":"/Users/nijimac088/goo-memo-android/app/build/intermediates/transforms/RealmTransformer/develop/debug/1.jar"}],"tool":"D8"} | |
| RealmTransformerとあるからRealm周りを疑ったが、結果違った。 | 
| /* | |
| Android Basics: Add a button to an app | |
| 1.Classes and object instances in Kotlin | |
| */ | |
| fun main() { | |
| val myFirstDice = Dice(6) | |
| println("Your ${myFirstDice.numSides} sided dice rolled ${myFirstDice.roll()}!") | |
| val mySecondDice = Dice(20) | |
| println("Your ${mySecondDice.numSides} sided dice rolled ${mySecondDice.roll()}!") | 
| // Android Basics: Introduction to Kotlin | |
| fun main() { | |
| val age = 24 | |
| val layers = 5 | |
| printCakeCandles(age) | |
| printCakeTop(age) | |
| printCakeBottom(age, layers) | |
| } | 
extension UIViewController {
    // 簡易なアラートダイアログを表示する
    func showSimpleAlert(title: String?, message: String?, action: ((UIAlertAction) -> Void)? = nil) {
        let alertController = UIAlertController(title: title,
                                                message: message,
                                                preferredStyle: .alert)
        let defaultAction = UIAlertAction(title: "OK",
                                          style: .default,
 handler: action)class LineView: UIView {
    override func draw(_ rect: CGRect) {
        layer.cornerRadius = 5
        layer.masksToBounds = true
        // 左側だけ丸くする
        layer.maskedCorners = [.layerMinXMinYCorner, .layerMinXMaxYCorner]
 super.draw(rect)| #Device(UDID)追加時 | |
| developer portalで | |
| 1.Devices追加 | |
| 2.Profiles編集 | |
| 3.Profiles ダウンロード | |
| 4.BitriseのCode Signningに新しいProfilesをアップロード | |
| 5.XcodeのProject設定確認 | |
| ・Manual signningにしてcommit | 
class PaddingLabel: UILabel {
    // paddingの値
    let padding = UIEdgeInsets(top: 4, left: 16, bottom: 4, right: 16)
    override func drawText(in rect: CGRect) {
        let newRect = rect.inset(by: padding)