का उपयोग कर एसडीकार्ड पर फ़ाइल कैसे सेवा करें मैंने नैनो एचटीटीपीडी का उपयोग करके एक छोटा एंड्रॉइड सर्वर लिखा है। यह एक HTML फ़ाइल अच्छी तरह से सेवा कर सकता है (वेब पेज एसडीकार्ड/www/index.html पर स्थित है)। क्या कोई मुझे यह जानने में मदद कर सकता है कि मैं नैनो एचटीटीपीडी का उपयोग कर एचटीएमएल पेज की बजाय ऑडियो या वीडियो फाइल कैसे सेवा कर सकता हूं? अगर मुझे मूर्खतापूर्ण लगता है, तो मुझे माफ़ कर दो, क्योंकि मैं HTTP में नया हूं! यहाँ मेरी सर्वर साइड कोड है (मैं एक ऑडियो फ़ाइल की है कि वेबपेज पथ बदल दिया है):NanoHTTPD (एंड्रॉइड के अंदर)
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
कोई मदद:
package com.example.zserver;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.Map;
import android.app.Activity;
import android.os.Bundle;
import android.os.Environment;
import android.util.Log;
public class MainActivity extends Activity {
private WebServer server;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
server = new WebServer();
try {
server.start();
} catch(IOException ioe) {
Log.w("Httpd", "The server could not start.");
}
Log.w("Httpd", "Web server initialized.");
}
@Override
public void onDestroy()
{
super.onDestroy();
if (server != null)
server.stop();
}
private class WebServer extends NanoHTTPD {
public WebServer()
{
super(8080);
}
@Override
public Response serve(String uri, Method method,
Map<String, String> header,
Map<String, String> parameters,
Map<String, String> files) {
String answer = "";
try {
// Opening file from SD Card
File root = Environment.getExternalStorageDirectory();
FileReader index = new FileReader(root.getAbsolutePath() +
"/www/music.mp3");
BufferedReader reader = new BufferedReader(index);
String line = "";
while ((line = reader.readLine()) != null) {
answer += line;
}
} catch(IOException ioe) {
Log.w("Httpd", ioe.toString());
}
return new NanoHTTPD.Response(answer);
}
}
}
मैं अपने कोड में आवश्यक उपयोग-अनुमतियों को शामिल किया है सराहनीय होगा। अग्रिम में धन्यवाद!
संपादित करें, जोड़ा अनुमति:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
EDIT1: पढ़ने की विहित रास्ता और बफ़र्स के लिए लिख:
int read;
int n=1;
while((read = dis.read(mybytearray)) != -1){
dos.write(mybytearray, 0, read);}
बहुत बहुत धन्यवाद! यह छोटे मीडिया के लिए ठीक काम करता है। मैं सोच रहा था कि पढ़ने/लिखने (बफर का उपयोग करके) के कैनोलिक तरीके को कैसे शामिल किया जाए ताकि बड़ी फ़ाइलों को स्थानांतरित किया जा सके। कस्टम प्रोटोकॉल में, यह सीधे आगे है। मैं बस एक बफर (डेटा इनपुट स्ट्रीम से भरा) से पढ़ता हूं और साथ ही इसे डेटा आउटपुट स्ट्रीम में लिखता हूं। मुझे यकीन नहीं है कि यह HTTP में कैसे प्राप्त किया जा सकता है। मैं प्रत्येक डेटा खंड में हेडर जोड़ने के बिना लगातार डेटा नहीं भेज सकता .. या शायद मुझे कुछ याद आ रहा है। क्या आप नमूना कोड प्रदान कर सकते हैं? विवरण के लिए कृपया मेरे संपादन खंड का संदर्भ लें। एक बार फिर धन्यवाद। –
स्थिति।ठीक है एमपी 3 एचटीएमएल 5 प्लेयर में तलाशने की इजाजत नहीं दे रहा है, कृपया मुझे बताएं कि मुझे प्लेयर – yourkishore
में इसे बनाने के लिए उपयोगकर्ता को क्या हेडर चाहिए, मैंने अपने फोन से अपने फोन से एमपी 3 स्ट्रीम करने के लिए इस कोड का इस्तेमाल किया। मुझे त्रुटि मिल रही है '403 निषिद्ध (/) '। इसे कैसे ठीक करें? –