アプリからメールを起動する
アプリからメールを起動する方法。
.hファイル
・メールのフレームワークを読み込む
・メール用のデリゲートをセット
#import <MessageUI/MessageUI.h> @interface MainViewController : UIViewController <MFMailComposeViewControllerDelegate>
.mファイル
//------------------------------------------------------------------------------
// メール機能開始
//------------------------------------------------------------------------------
- (void)mailStart{
// メールを利用できるかチェック
if (![MFMailComposeViewController canSendMail]) {
return;
}
//メール管理作成
MFMailComposeViewController *mailCtrl = [[MFMailComposeViewController alloc] init];
//デリゲートの設定
mailCtrl.mailComposeDelegate = self;
//タイトル
[mailCtrl setSubject:[NSString stringWithFormat:@“メールタイトル”]];
//メールアドレス
[mailCtrl setToRecipients:[NSArray arrayWithObjects:@"メールアドレス”, nil]];
//本文
[mailCtrl setMessageBody:@"メール本文” isHTML:NO];
//送信するデータのNSString
NSString *str = @"データ用文字列";
//送信するデータをNSData型に変換する
NSData *data = [str dataUsingEncoding:NSShiftJISStringEncoding];dataUsingEncoding:NSShiftJISStringEncoding];
//データを添付する
[mailCtrl addAttachmentData:data mimeType:@"text/csv" fileName:@“データファイル名.csv”];
//メールビューを表示
[self presentViewController:mailCtrl animated:YES completion:nil];
}
//------------------------------------------------------------------------------
// メール機能終了(終了すると呼ばれる)
//------------------------------------------------------------------------------
- (void)mailComposeController:(MFMailComposeViewController*)controller
didFinishWithResult:(MFMailComposeResult)result
error:(NSError*)error {
switch (result)
{
// キャンセル
case MFMailComposeResultCancelled:
break;
// 保存
case MFMailComposeResultSaved:
break;
// 送信
case MFMailComposeResultSent:
{
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:nil message:@"送信に成功しました。" delegate:nil cancelButtonTitle:nil otherButtonTitles:@"OK", nil];
[alert show];
break;
}
// 送信失敗
case MFMailComposeResultFailed:
{
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:nil message:@"送信に失敗しました。" delegate:nil cancelButtonTitle:nil otherButtonTitles:@"OK", nil];
[alert show];
break;
}
default:
break;
}
// モーダルビューを閉じる
[self dismissViewControllerAnimated:YES completion:nil];
}
音量を取得する
iPhoneでマイクから拾った音の音量を取得する方法。
① AudioToolBoxをインポートする
#import <AudioToolbox/AudioToolbox.h>
②音声入力用のキューとタイマーのインスタンス変数を用意する
@implementation ViewController{
AudioQueueRef _queue;
NSTimer *_timer;
}
③コールバック関数を宣言する(今回は録音をしないので、中身は空)
static void AudioInputCallback(
void* inUserData,
AudioQueueRef inAQ,
AudioQueueBufferRef inBuffer,
const AudioTimeStamp *inStartTime,
UInt32 inNumberPacketDescriptions,
const AudioStreamPacketDescription *inPacketDescs)
{
}
④音検知の設定、開始
- (void)startUpdatingVolume{
// 記録するデータフォーマットを決める
AudioStreamBasicDescription dataFormat;
//サンプリング周波数(1秒間のフレーム数)
dataFormat.mSampleRate = 44100.0f;
//フォーマットID(リニアPCM、MP3、AACなど)
dataFormat.mFormatID = kAudioFormatLinearPCM;
//フォーマットフラグ(エンディアン、整数or浮動小数点数)
dataFormat.mFormatFlags = kLinearPCMFormatFlagIsBigEndian | kLinearPCMFormatFlagIsSignedInteger | kLinearPCMFormatFlagIsPacked;
//1バケットのバイト数
dataFormat.mBytesPerPacket = 2;
//1バケットのフレーム数
dataFormat.mFramesPerPacket = 1;
//1フレームのバイト数
dataFormat.mBytesPerFrame = 2;
//1フレームのチャンネル数
dataFormat.mChannelsPerFrame = 1;
//1チャンネルののビット数
dataFormat.mBitsPerChannel = 16;
//?
dataFormat.mReserved = 0;
// レベルの監視を開始する
AudioQueueNewInput(&dataFormat, AudioInputCallback, (__bridge void *)(self), CFRunLoopGetCurrent(), kCFRunLoopCommonModes, 0, &_queue);
AudioQueueStart(_queue, NULL);
// レベルメータを有効化する
UInt32 enabledLevelMeter = true;
AudioQueueSetProperty(_queue, kAudioQueueProperty_EnableLevelMetering, &enabledLevelMeter, sizeof(UInt32));
// 定期的にレベルメーターを監視するタイマーを設定
_timer = [NSTimer scheduledTimerWithTimeInterval:0.1
target:self
selector:@selector(detectVolume:)
userInfo:nil
repeats:YES];
}
⑤一定時間ごとにレベルを取得する(④で指定した秒数ごとに呼ばれる)
- (void)detectVolume:(NSTimer *)timer
{
// レベルを取得
AudioQueueLevelMeterState levelMeter;
UInt32 levelMeterSize = sizeof(AudioQueueLevelMeterState);
AudioQueueGetProperty(_queue, kAudioQueueProperty_CurrentLevelMeterDB, &levelMeter, &levelMeterSize);
// 最大レベルと平均レベルを表示(値はマイナスを取る、最大が0.0)
NSLog(@"mPeakPower:%f",levelMeter.mPeakPower);
NSLog(@"mAveragePower:%f",levelMeter.mAveragePower);
if (levelMeter.mPeakPower > -1.0) {
//音量が一定値を越えると処理を行う
}
}
⑥音の検知の終了
- (void)stopUpdatingVolume{
// キューを空にして停止
AudioQueueFlush(_queue);
AudioQueueStop(_queue, NO);
AudioQueueDispose(_queue, YES);
//タイマーを停止する
if ([_timer isValid]) {
[_timer invalidate];
_timer = nil;
}
}使ったあとは停止しましょう。
Xcodeショートカットキーのカスタマイズ
Xcodeを使っていて、ショートカットキーを自分の使いやすいようにいじりたいなーと思ったときのめも。
英語が苦手すぎて「環境設定は?!どこ?!」ってすぐ迷う……
やり方
Xcodeのメニューバー「Xcode」→「Preferences」→「Key Bindings」タブ
でショートカットキーの確認画面に入れます。
初めての時は、
上のKey Binding Setの横の「Default」をクリックし、「Manage Key Bindings…」を選択、
左下の「+」ボタンを押して「Duplicate "Default"」を押すとデフォルトのショートカットキーの設定をコピーすることができるので、
自分の好きな名前をつけてあとは自由に編集しましょう!
変更したい項目を見つけて、「Key」の部分をダブルクリックし、変更したいキーを入力、他の部分をクリックすることで変更を完了できます。