Первый и второй пункты реализуются на уровне SDK. С первым довольно легко, а над вторым придётся чуть потрудится.