- Siêu lớp và danh mục iOS/Objective-C
- object-c - -1001 lỗi khi NSURLSession vượt qua httpproxy và /etc/hosts
- java - Nhận địa chỉ url bằng lớp mạng
- ios - Âm thanh không phát trong thông báo đẩy
Vì muốn ghi âm ở chế độ nền nên tôi đã sử dụng một dịch vụ.. nhưng tôi không thể ghi âm trong dịch vụ đó.
Tôi đã thử mã tương tự trong Hoạt động và nó đã hoạt động với tôi. Nhưng làm cách nào tôi có thể ghi âm ở chế độ nền trong khi nhập giọng nói/giọng nói, nghĩa là nếu có đầu vào bằng giọng nói thì quá trình ghi âm sẽ bắt đầu và ở chế độ nền...?
câu trả lời hay nhất
Trong một trong các dự án của mình, tôi cần ghi lại âm thanh từ micrô liên tục. Tôi không thể chia sẻ dự án nhưng tôi có thể chia sẻ lớp AudioRecorder cụ thể.
nhập java.io.File;
import java.io.IOException;
nhập java.io.RandomAccessFile;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
nhập android.content.Context;
import android.media.AudioFormat;
import android.media.AudioRecord;
nhập android.media.MediaRecorder;
import android.util.Log;
lớp công khai AudioRecorder {
bang enum công khai {
KHỞI TẠO,
SẴN SÀNG,
GHI ÂM,
LỖI,
ĐÃ DỪNG
};
byte riêng tư[] audioBuffer = null;
nguồn int riêng = MediaRecorder.AudioSource.MIC;
mẫu int riêngRate = 0;
bộ mã hóa int riêng = 0;
int riêng nChannels = 0;
bộ đệm int riêngRead = 0;
bộ đệm int riêngSize = 0;
riêng tư RandomAccessFile tempAudioFile = null;
public AudioRecord audioRecorder = null;
nhà nước tư nhân;
bSamples ngắn riêng tư = 16;
int framePeriod riêng tư;
// Khoảng thời gian mà các mẫu đã ghi được xuất ra tệp
// Chỉ được sử dụng ở chế độ không nén
riêng tư tĩnh cuối cùng TIMER_INTERVAL = 120;
Chủ đề dễ bay hơi t = null;
public int TimeStamp = 0, count = 0, preTimeStamp = 0;
Public AudioRecorder(Ngữ cảnh c) {
this.sampleRate = 11025;
this.encode = AudioFormat.ENCODING_PCM_16BIT;
this.nChannels = AudioFormat.CHANNEL_CONFIGUration_MONO;
this.preTimeStamp = (int) System.currentTimeMillis();
myApp = (MyApp) c.getApplicationContext();
mQueue = myApp.getQueue();
thử {
/*
Chuỗi fileName = "/sdcard/XYZ/11025.wav";
tempAudioFile = new RandomAccessFile(fileName,"rw");
*/
framePeriod = sampleRate * TIMER_INTERVAL / 1000;
bufferSize = framePeriod * 2 * bSamples * nChannels / 8;
if (bufferSize < AudioRecord.getMinBufferSize(sampleRate, nChannels, bộ mã hóa)) {
bufferSize = AudioRecord.getMinBufferSize(sampleRate, nChannels, bộ mã hóa);
// Đặt khoảng thời gian khung và khoảng thời gian hẹn giờ tương ứng
framePeriod = bufferSize / (2 * bSamples * nChannels / 8);
Log.w(AudioRecorder.class.getName(), "Tăng kích thước bộ đệm lên " + Integer.toString(bufferSize));
}
audioRecorder = new AudioRecord(source, sampleRate, nChannels, bộ mã hóa, bufferSize);
audioBuffer = byte mới [2048];
audioRecorder.setRecordPositionUpdateListener(updateListener);
audioRecorder.setPositionNotificationPeriod(framePeriod);
} bắt (Ngoại lệ cũ) {
ex.printStackTrace();
}
}
riêng AudioRecord.OnRecordPositionUpdateListener updateListener = new AudioRecord.OnRecordPositionUpdateListener() {
@Ghi đè
public void onPeriodicNotification(Máy ghi âm AudioRecord) {
// Log.d(Constant.APP_LOG,"Vào thông báo định kỳ...");
}
bắt (IOException e) {
// TODO Khối bắt được tạo tự động
e.printStackTrace();
}
*/
}
@Ghi đè
public void onMarkerReached(Máy ghi âm AudioRecord) {
// TODO sơ khai phương thức được tạo tự động
}
};
bắt đầu khoảng trống công khai () {
if (state == State.INITIALIZING) {
audioRecorder.startRecording();
trạng thái = Trạng thái.RECORDING;
t = Chủ đề mới() {
công khai void run() {
// Tại đây Bạn có thể đọc Bộ đệm âm thanh của mình
audioRecorder.read(audioBuffer, 0, 2048);
}
};
t.setPriority(Thread.MAX_PRIORITY);
t.start();
} khác {
Log.e(AudioRecorder.class.getName(), "start() được gọi ở trạng thái bất hợp pháp");
trạng thái = Trạng thái.ERROR;
}
}
dừng trống công khai () {
if (state == State.RECORDING) {
audioRecorder.stop();
Chủ đề t1 = t;
t = rỗng;
t1.interrupt();
đếm = 0;
trạng thái = Trạng thái.STOPPED;
} khác {
Log.e(AudioRecorder.class.getName(), "stop() được gọi ở trạng thái bất hợp pháp");
trạng thái = Trạng thái.ERROR;
}
}
phát hành khoảng trống công khai () {
if (state == State.RECORDING) {
dừng lại();
}
if (audioRecorder != null) {
audioRecorder.release();
}
}
thiết lập lại khoảng trống công khai () {
thử {
if (state != State.ERROR) {
giải phóng();
}
} catch (Exception e) {
Log.e(AudioRecorder.class.getName(), e.getMessage());
trạng thái = Trạng thái.ERROR;
}
}
Trạng thái công khai getState() {
return state;
}
}
Bây giờ, hãy tạo dịch vụ và gọi phương thức start() cũng như thao tác với bộ đệm âm thanh đã ghi theo mục đích của bạn.
Hy vọng điều này sẽ giúp.
Giới thiệu về android - Làm cách nào để ghi âm thanh/giọng nói nền liên tục trong android? , chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/10025824/
Chi phí xây dựng một hệ thống quản lý phụ trợ từ đầu là rất lớn, do đó, một thư viện thành phần hoàn thiện sẽ được chọn và dựa trên đó, logic nghiệp vụ sẽ được xếp chồng lên nhau. Thư viện thành phần của công ty chúng tôi dựa trên Ant Design. Ant Design chứa một bộ giải pháp phụ trợ hoàn chỉnh, không chỉ
Trong ứng dụng iOS của tôi, tôi có thuộc tính NSDate* được đánh dấu giữ lại. Khi ứng dụng của tôi được kích hoạt lại, giá trị thuộc tính đã được giải phóng. Tôi có hiểu nhầm cách hoạt động của các thuộc tính và quản lý bộ nhớ không và làm cách nào tôi có thể đề phòng điều này? Câu trả lời tốt nhất là hiển nhiên,
Tôi có một ứng dụng WinForms mẫu sử dụng thành phần BackgroundWorker. Nó hoạt động tốt, nhưng khi tôi nhấp vào nút Hủy để hủy chuỗi nền, nó không hủy chuỗi. Khi tôi nhấp vào nút Hủy, nó sẽ gọi
Tôi hiện đang phát triển một ứng dụng khi khởi động sẽ ping máy chủ trả về mã nhận dạng duy nhất cho mỗi thiết bị được kết nối. Thiết bị sẽ truy xuất một trang khác từ máy chủ cứ sau 5 giây cho một bộ dữ liệu khác. ID duy nhất này có thể
Tôi đang phát triển một ứng dụng và khi nó được nhấn ở chế độ nền thông qua nút home, bộ hẹn giờ sẽ bắt đầu và khi ứng dụng quay trở lại nền trước và bộ hẹn giờ đã trôi qua một khoảng thời gian nhất định, nó sẽ được thực thi. Câu hỏi của tôi là khi ứng dụng của tôi chuyển sang nền/nền trước? Có phương pháp đặc biệt hoặc kỹ thuật nào khác không?
Tôi có Chế độ xem bản đồ hầu như không có MKPointAnnotation. Tuy nhiên, mọi thứ đều hoạt động tốt, "nền" của MKPoiintAnnotation của View là "ẩn" và do đó không hoàn toàn "hiển thị". tôi nghĩ
Tôi đang phát triển một ứng dụng dữ liệu quảng cáo trên iOS. Dữ liệu quảng cáo ứng dụng của tôi ở phía trước vẫn ổn. Nhưng tôi muốn quảng cáo dữ liệu đèn hiệu trong phần phụ trợ của iOS. Tôi thiết lập cài đặt ngoại vi nền. và dữ liệu quảng cáoquảng cáoData = [CBAdvertise
Ví dụ: nếu tôi có một tập hợp các hành động mà tôi muốn chạy trong nhân viên nền dựa trên các điều kiện cụ thể, thì tôi có 10 điều kiện if(a) BackgroundWorker doA = new Backgroundworker() if(
Tôi muốn chạy một chức năng một cách độc lập. Từ hàm tôi đã gọi, tôi muốn quay lại mà không cần đợi các hàm khác kết thúc. Tôi đã thử sử dụng threadind, nhưng việc này đang chờ, kết thúc. thread = threading.Thread(target=my
Tôi muốn thực hiện một số tác vụ ngay lập tức khi người dùng trực tuyến, ngay cả khi họ ở chế độ nền. Tôi đang sử dụng lớp Khả năng tiếp cận để kiểm tra internet. Nhưng lớp này không thông báo cho tôi khi tôi ở chế độ nền. Tôi biết ai đó đã hỏi câu hỏi này trước đó nhưng không tìm thấy giải pháp nào
Tôi đang gặp sự cố không liên tục (ôi!) khi tính năng chuyển văn bản thành giọng nói đang phát trong nền do Apple Watch của tôi kích hoạt. Tôi có chế độ nền, lớp AVSession và trình xử lý WatchKitExtensionRequest được thiết lập chính xác.
Tôi có một chương trình khá phức tạp nên tôi sẽ không đưa toàn bộ chương trình vào đây. Đây là phiên bản đơn giản hóa: class Report { Private BackgroundWorker public;
Tôi có một tác vụ đang chạy trong trình xử lý nền. Bằng cách nhấp vào nút bắt đầu, người dùng bắt đầu quá trình và nhận được nút hủy để hủy quá trình. Khi người dùng bấm hủy, tôi muốn hiển thị hộp thông báo "Quá trình chưa hoàn tất, bạn có muốn tiếp tục không". ở đây tôi hy vọng
Tôi có một tập lệnh được mã hóa theo cách sau. Tôi muốn chạy nó dưới dạng tiến trình nền/daemon, nhưng khi tôi khởi động tập lệnh, nếu tôi đóng nó, nó sẽ dừng từ cửa sổ đầu cuối mà chương trình đang chạy. Tôi cần làm gì để chương trình tiếp tục chạy loop do pid = fork do
Tôi đang tạo một ứng dụng sử dụng API nhận dạng hoạt động để theo dõi hoạt động của người dùng ở chế độ nền. Nếu người dùng ở cùng một vị trí trong một khoảng thời gian xác định (ví dụ: 1 giờ), hệ thống sẽ gửi thông báo đẩy cho biết. người dùng đi dạo.
Khi cố gắng gửi yêu cầu nền bằng phương thức dataTaskPublisher của URLSession: URLSession(configuration: URLSessionConfiguration.ba
Khi tôi biên dịch mã này, tôi gặp lỗi của anh ấy, tham chiếu đối tượng được đặt thành null, vị trí lỗi nằm trong Dowork, đối sốtest.valueone = 8 public một phần lớp Form1:
Có cách nào để sử dụng một ứng dụng được thu nhỏ hoặc không hoạt động không? Tôi có thể mở ứng dụng của mình, sau đó mở và sử dụng ứng dụng khác, sau đó nhấn nút để kích hoạt ứng dụng của mình không? Ví dụ: mở ứng dụng của tôi, mở Safari, nhấn nút (F1 hoặc bất kỳ nút nào
Yêu cầu cụ thể của tôi là để một ứng dụng chạy ở chế độ nền, được thông báo rằng màn hình sắp chuyển sang chế độ ngủ hoặc thiết bị đã hoặc sắp đạt đến thời gian chờ không hoạt động - sau đó thức dậy và thực hiện một số đoạn (ngắn gọn) mã số. Tôi đã tìm thấy tài liệu tham khảo ở đây về thông báo về một ứng dụng được đặt ở chế độ nền hoặc bị tạm dừng:
Tôi có một ứng dụng có LSUElement được đặt thành 1. Nó có trình chỉnh sửa tích hợp sẵn, vì vậy tôi muốn ứng dụng xuất hiện trong vòng lặp Cmd+Tab khi trình chỉnh sửa mở. -(void)stepIntoForegro
Tôi là một lập trình viên xuất sắc, rất giỏi!